Je débute sur YiiFramework et je galère un peu à afficher le résultat d’une requête avec jointure.
Mon but consiste à afficher toutes les tablettes que l’utilisateur possède.
Dans mon modèle j’ai les tables Tablette et Client. Dans la table Tablette il y a une clef étrangère pointant vers le client qui la possède.
Dans mon controller voici mon code:
public function displayTablettesUser()
{
$user_id = Yii::$app->user->getId();
$var_tablette = Tablette::find()->where(['ID_fk_client' => 'user_id']);
// Send toutes les tablettes du client
return $this->render('profile', array('tablettes' => $var_tablette));
}
Et voici mon code pour afficher les tablettes de l’utilisateur courant:
<?php
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use app\assets\AppAsset;
AppAsset::register ( $this );
echo "hola";
echo "<br/>";
echo "<br/>";
foreach($tablettes as $tablette){
echo($tablette->code)." : ".$tablette->iDFkClient->firstName."</br>";
}
?>
Seulement lorsque je vais sur ma page j’obtiens cette erreur : Trying to get property of non-object.
J’ai du mal à comprendre via yii sans passer directement par des requêtes SQL.
dans le modèle user, définis une relation hasTablettes. ensuite, si $user est ton utilisateur, tu n’auras qu’à faire $user->tablettes pour accéder à toutes les tablettes de l’utilisateur.
Je te conseille de lire la doc au sujet de l’Active Record, en particulier les paragraphes sur les relations :