使用Eloquent执行查询时获取单个集合而不是数组

时间:2017-05-24 13:52:11

标签: php laravel eloquent

我有一个这样的数据库:

Portal: id
User: id,portal_id
Item: id,user_id

我希望在一个集合中获取门户网站中用户的所有项目。

我有用户名。

我可以用数组甚至纯SQL来做到这一点,但我想知道是否有更好的方法:

$users = user::where("portal_id",Auth::user()->portal_id)->get();

$i = 0;

foreach($users as $user){
$items[$i] = item::where("user_id",$user->id)->get();
$i++
}

我希望所有内容都在同一个集合中,而不是数组。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您需要在ItemUser之间定义belongsTo()关系:

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

并使用whereHas()过滤项目:

Item::whereHas('user', function ($) {
    $q->where("portal_id", auth()->user()->portal_id);
})->get();