Laravel whereIn return 每个项目的唯一项目
Laravel whereIn return only item of each
我有以下 Eloquent 查询
Task::whereIn('user_id', [5,6,7,8])
->onlyActive()
->with('user')
->get();
效果完美。问题是每个 user_id
可以有 多个任务 ,但我只想 return 每个任务 user_id
.
有什么想法吗?
最简单的方法是在用户模型上定义一个新关系以获取最新任务 - 如果这对您有用
class User extends Model
{
public function tasks()
{
return $this->hasMany(Task::class);
}
public function latestTask()
{
return $this->hasOne(Task::class)->latest();
}
}
然后为每个用户查询一个活动任务
User::whereIn('id', [5,6,7,8])
->with(['latestTask' => function($query){
$query->onlyActive();
}])
->get();
为什么不使用 take()?
->with([
'user' => function($user) {
$user->tasks()->take(1);
}
])
我有以下 Eloquent 查询
Task::whereIn('user_id', [5,6,7,8])
->onlyActive()
->with('user')
->get();
效果完美。问题是每个 user_id
可以有 多个任务 ,但我只想 return 每个任务 user_id
.
有什么想法吗?
最简单的方法是在用户模型上定义一个新关系以获取最新任务 - 如果这对您有用
class User extends Model
{
public function tasks()
{
return $this->hasMany(Task::class);
}
public function latestTask()
{
return $this->hasOne(Task::class)->latest();
}
}
然后为每个用户查询一个活动任务
User::whereIn('id', [5,6,7,8])
->with(['latestTask' => function($query){
$query->onlyActive();
}])
->get();
为什么不使用 take()?
->with([
'user' => function($user) {
$user->tasks()->take(1);
}
])