你好,我有一个表 ideas
,我想返回 user_id = 带有经过身份验证的用户 ID 的行,以及 category_id = 假设是数组 [1, 2, 3]
。
免责声明:我希望返回这两个条件!
最佳答案
好像是这样的:
我认为您的表 ideas
和与此相关的模型 Idea 具有下一个结构:
id, user_id, category_id 等一些字段...
要获得经过身份验证的用户,您可以执行 Auth::user(); 所以,你可以这样做:
$categoryIds = [1, 2, 3];
$authUserId = Auth::user()->id;
$ideas = Idea::where('user_id', $authUserId)->whereIn('category_id', $categoryIds)->get();
如果您需要通过查询提取关系,您可以添加 with
语句:
$ideas = Idea::with('categories')->where('user_id', $authUserId)->whereIn('category_id', $categoryIds)->get();
ofc,你需要在你的模型中设置关系
您还可以在用户模型中设置关系并获取与用户关联的记录:
User.php
public function ideas() {
return $this->hasMany('App\Idea');
}
somewhere in code:
$categoryIds = [1, 2, 3];
Auth()->user()->ideas()->whereIn('category_id', $categoryIds)->get();
更新: 要进行某种形式的加入,您可以使用此方法:
$userIdeas = Idea::where('user_id', Auth::user()->id)->get();
$categoryIds = [1, 2, 3];
$categoryIdeas = Idea::where('user_id', '<>', Auth::user()->id)->whereId('category_id', $categoryIds)->get();
$mergedIdeas = $userIdeas->merge($categoryIdeas);
最后。在一个查询中完成:
$userId = Auth::user()->id;
$categoryIds = [1, 2, 3];
$ideas = Idea::where('user_id', $userId)->orWhere(function($query) use ($categoryIds) {
$query->where('user_id', '<>', $userId)->whereIn('category_id', $categoryIds);
})->get();
关于php - Laravel Eloquent 地返回两个 where 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44756460/