Я получаю все предметы, принадлежащие аутентифицированному пользователю.Laravel упрощает вывод вложенных отношений
$ items = Auth :: user() -> with ('items') -> get();
На мой взгляд, я могу получить доступ к коллекции элементов, но вместо title_id хочу получить значение item_title. В настоящее время я нахожусь в состоянии получить ITEM_TITLE значение, используя код ниже:
$ item-> Заголовок-> название
Можно ли упростить ее, чтобы получить титул, как это: $ item-> титул ?
Вот мои модели и отношения:
Users
id
username
Item
id
user_id
title_id
Item_Titles
id
title
модель Пользователь:
public function items()
{
return $this->hasMany('Item', 'user_id', 'id');
}
товара модель:
public function user(){
return $this->belongsTo('User', 'user_id', 'id');
}
public function title()
{
return $this->belongsTo('ItemTitle','title_id','id');
}
ItemTitle модель:
public function item()
{
return $this->hasMany('Item', 'title_id', 'id');
}
UPDATE
Простите, наверное, я не был ясен. Если быть точным - я просто хочу найти альтернативную альтернативу:
$items=Item::where('user_id','=',Auth::id())->leftJoin('item_titles', 'item.title_id', '=', 'item_titles.id')->get();
@foreach ($items as $item)
{{ $item->title }}
@endforeach
Auth :: user() -> названия не очевидны. названия, относящиеся к предмету, а не к пользователю. Я предполагаю, что коллекция титров должна быть каким-то образом объединена с коллекцией предметов. Или соединение должно использоваться вместо красноречивых отношений. – user947668
Я предположил, что вы хотите, чтобы это было 1 уровень, потому что это звучало так, как вы хотели в своем вопросе. Однако я отредактирую свой ответ. –
Это ужасно, в идеале вы бы использовали 'first' и' pluck' соответственно. – ash