laravel eloquent Beziehung von query builder
Wenn ich dies tun würde, wäre ich in der Lage zum abrufen der images()
für die item
$items = Item::all();
foreach($items as $item){
$image = $item->images()->first();
}
Allerdings, wenn ich hatte eine komplexe Abfrage mit dem Abfrage-generator. Ich wäre nicht in der Lage, um die images()
aus. Gibt es einen Weg um die Beziehung der Daten aus der Beredte Modelle in Anbetracht dieser ist ein Abfrage-generator?
$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();
}
Element Modell
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');
}
}
Bild Modell
class Image extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'images';
public function item(){
return $this->belongsTo('Item');
}
}
AKTUALISIERT: Hinzugefügt-User-Modell
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');
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht wirklich die query ausgeführt. Hinzufügen von get () alle() ersten oder()
Zusätzlich, Sie werden nicht tatsächlich wieder ein beredtes Modell so nicht in der Lage sein zu verwenden, beredte Beziehungen. Sie können fügen Sie einfach fließend Abfragen zu beredt, obwohl. Versuchen Sie dies:
all()
beim kopieren und einfügen, denn ich hatte eine Reihe von->where()
. Dies funktioniert für$item->images()->first()
aber nicht für$item->user->name
irgendwelche Ideen? Ich erhalte eine FehlermeldungTrying to get property of non-object
$item->user->name
funktioniert, wenn ich einfach$item = Item::all();
. Haben Sie irgendwelche Ideen?