【问题标题】:Laravel Check column using relationship columnLaravel 使用关系列检查列
【发布时间】:2020-06-23 00:38:22
【问题描述】:

我需要查询并检查我的主表列中的关系列是否相同。

示例代码:

不工作

User::with('product', => function($q) {
                $q->whereRaw('users.company_id',' product.company_id');
            })->get();

不工作

User::with('product', => function($q) {
                $q->whereRaw('users.company_id = product.company_id');
            })->get();

不工作

User::with('product')->whereColumn('users.company_id', 'product.company_id')->get();

但它不起作用.. 知道怎么做吗?

我的模特

用户模型

public function product()
{
    return $this->belongsTo(Product::class, 'product_id');
}

产品型号

public function users()
{
    return $this->hasMany(User::class, 'product_id');
}

【问题讨论】:

  • 您能否向我们展示所有模型(用户、产品和公司)并向我们展示您尝试编辑的文件/功能。如果答案不起作用
  • 这只是一个示例模型。但我的代码中的代码相同。
  • 你的公司模式怎么样?如果你没有 1,我建议你做一个让关系更容易。

标签: php sql laravel lumen


【解决方案1】:

请再试一次:

User->with(['product' => function ($query) {
    $query->join('users', 'users.company_id', '=', 'product.company_id');
}])->get();

【讨论】:

  • 尽量不要在这种情况下使用join。
  • 我试了一下,结果改了或者不对,查询删除了没有产品的用户记录。
  • 查询是正确的,但是如果你可以看到我的产品模型,产品模型有很多用户,所以如果我在产品查询中使用连接,查询响应会变长。在我这边,从 1290ms 变为 3.0s。无论如何,我赞成你的回答:)
【解决方案2】:

尝试使用DB:raw() 然后显示表格信息?喜欢this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    相关资源
    最近更新 更多