2015-09-21 5 views
0

Я пытаюсь получить список идентификаторов пользователей, которые читают конкретный журнал.Laravel принадлежитToMany и Eloquent query

вещи таблица (журналы)

id 
name 

thing_progresses

id 
progress_value 

thingprogress_thing

id 
thing_progress_id (FK from thing_progresses table) 
thing_id (FK from things table) 
user_id (FK from users table) 

Thing Модель

namespace App\Models; 
use Illuminate\Database\Eloquent\Model; 

class Thing extends Model 
{ 
    public function readers() { 
     return $this->belongsToMany('\App\Models\ThingProgress', 'thingprogress_thing'); 
    } 
} 

Мое приложение

$readers = Thing::with(array('readers' => function($query) use ($id) { 
$query->where('thing_progress_id', '1'); 
}))->find($id); 

Посмотреть

@foreach($readers as $reader) 
    {{$reader->user_id}} 
@endforeach 

Вот ошибка я получил.

Trying to get property of non-object (View: /Applications/MAMP/htdocs/master/resources/views/frontend/thing/book/index.blade.php) 
+0

Вы бросили '$ читателей'? Это коллекция или отдельный объект? – BrokenBinary

ответ

0

Чтобы получить атрибуты, сводную таблицу (и, что не являются FK для отношений), вы должны сказать Laravel, чтобы получить их.

Просто добавьте withPivot('user_id') к отношениям т.е.

public function readers() { 
    return $this->belongsToMany('\App\Models\ThingProgress', 'thingprogress_thing')->withPivot('user_id'); 
} 

Тогда вы можете получить к нему доступу:

$reader->pivot->user_id 

Надеется, что это помогает!

Смежные вопросы