laravel éloquent relation de générateur de requêtes
Si je fais cela, je voudrais être en mesure de récupérer la images()
pour la item
$items = Item::all();
foreach($items as $item){
$image = $item->images()->first();
}
Cependant, si j'avais une requête complexe en utilisant le générateur de requête. Je ne serais pas en mesure d'obtenir la images()
d'elle. Est-il possible d'obtenir toutes les données de relation à partir de la Éloquent les Modèles considérant que c'est un générateur de requêtes?
$items = DB::table('items as i')
->join('users AS u', 'i.user_id', '=', 'u.id')
->where('account_id', 5)->all();
foreach($items as $item){
$image = $item->images()->first();
}
Élément De Modèle
class Item extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'items';
public function images()
{
return $this->hasMany('Image');
}
public function user(){
return $this->belongsTo('User');
}
}
Le modèle de l'Image
class Image extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'images';
public function item(){
return $this->belongsTo('Item');
}
}
Mise à JOUR: Ajout de l'Utilisateur Modèle
class User extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
public function items()
{
//foreign key outside using this pk
return $this->hasMany('Item');
}
}
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas exécuté la requête. Ajouter get(), tous les() ou (premier)
En outre, vous n'allez pas être de retour éloquent modèle ne sera donc pas en mesure d'utiliser éloquent relations. Vous pouvez simplement ajouter couramment requêtes à éloquent que. Essayez ceci:
all()
tandis que le copier-coller car j'ai eu une série de->where()
. Cela fonctionne pour$item->images()->first()
mais ne fonctionne pas pour$item->user->name
des idées? J'obtiens une erreurTrying to get property of non-object
$item->user->name
fonctionne si je n'ai tout simplement$item = Item::all();
. Avez-vous des idées?