php - Laravel Eloquent 地返回两个 where 条件

标签 php mysql laravel

你好,我有一个表 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/

相关文章:

c# - 单击按钮时访问 GridView 的数据

php - Laravel5.4 中 Instagram 登录 OAuth 问题

php - 更改 wordpress 中的子菜单类

PHP Composer 与 Git 子模块和 Symfony2 混合

php - 这是一种有效的更新方法吗

javascript - 如何在数据库中插入 Bootstrap 下拉值

php - 在 laravel redis 中设置 ZADD 命令的选项

mysql - mysql工作台中的外键

php - 未加载 WebPush gmp 扩展,但需要使用 payload 发送推送通知。您可以在 php.ini 中修复此问题

javascript - 无法访问对象数组中的属性