Laravel 5.1 получает данные из подключенной таблицы

В моем приложении admin users может создать articles, Таблица статей: ID | user_id | title ...

Для каждого Article другой пользователь (который не админ) можете опубликовать offer и таблица предложений: ID | user_id(not admin) | article_id | price ...

Теперь мне нужно get all users для админ Пользователь, который публикует предложение в своей статье … Я пытаюсь:

 public function userbase()
{
$id = Auth::user()->id;//get admin id
$articles = Article::where('user_id', $id)->get();//select all admin articles
foreach ($articles as $article) {

$users = Offer::where('article_id', $article['id'])->orderBy('created_at', 'desc')->get(); //get all admin users

}return $users;}

но я получаю только: []

Также моя модель:
Статья:

public function offers() {
return $this->hasMany('App\Offer');
}

Предлагает:

public function user() {
return $this->belongsTo('App\User');
}

public function article() {
return $this->belongsTo('App\Article');
}

Так как же я могу получить все данные пользователя, которые были размещены в предложении администратора?

ОБНОВИТЬ

Я также попробую это:

$articles = Article::with([
'offers' => function($query) {
$query->orderBy('created_at', 'desc');
$query->with('user'); // if you want to eager load users for each offer too...
}
])->where('user_id', Auth::id())->get();

и я получаю эти данные:http://i.imgur.com/0kBVGrx.png

но как получить доступ user данные? я попробую ->get('user') но не работает …

2. ОБНОВЛЕНИЕ:

Я также пытаюсь:

  public function userbase()
{
$articles = Auth::user()->articles()->get();
foreach ($articles as $article) {

$offers = Offer::where('article_id', $article['id'])->orderBy('created_at', 'desc')->get();

}
foreach ($offers as $offer) {

$users = User::where('id', $offer['user_id'])->orderBy('created_at', 'desc')->get();

}

return $users;
}

но я получаю неопределенных переменных пользователей

0

Решение

Попробуй это :
Во-первых, вы можете добавить атрибут «isAdmin» в вашей модели пользователя.

public function userbase()
{
return Offer::select('users.*')
->where('users.isAdmin', false)
->join('articles','articles.id','=','offers.article_id')
->join('users','users.id','=','articles.user_id')
->where('articles.user_id', Auth::user()->id)
->orderBy('offers.created_at', 'desc')
->groupBy('users.id')
->get();
}

Обновление вашего решения:

 public function userbase()
{
$articles = Auth::user()->articles;
foreach ($articles as $article) {

$offers = Offer::where('article_id',$article->id)->orderBy('created_at', 'desc')->get();

}
$users = array();
foreach ($offers as $offer) {

$users[] = User::where('id', $offer['user_id'])->orderBy('created_at', 'desc')->get();

}

return $users;
}
1

Другие решения

Других решений пока нет …