Php 使用雄辩的语句执行查询时,获取单个集合而不是数组

Php 使用雄辩的语句执行查询时,获取单个集合而不是数组,php,laravel,eloquent,Php,Laravel,Eloquent,我有这样一个数据库: Portal: id User: id,portal_id Item: id,user_id 我希望在单个集合中获取门户中用户的所有项目 我有用户的id 我可以用数组甚至纯SQL来实现这一点,但我想知道是否有更好的方法: $users = user::where("portal_id",Auth::user()->portal_id)->get(); $i = 0; foreach($users as $user){ $items[$i] = item::

我有这样一个数据库:

Portal: id
User: id,portal_id
Item: id,user_id
我希望在单个集合中获取门户中用户的所有项目

我有用户的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++
}
我希望所有内容都在同一个集合中,而不是数组中

有什么建议吗?

您需要定义
项目
用户
之间的关系:

public function user()
{
    return $this->belongsTo('App\User');
}
和用于筛选项目:

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

你们建立关系了吗?