【问题标题】:How to pass parent column value in subquery in eloquent如何在雄辩的子查询中传递父列值
【发布时间】:2018-01-18 11:39:36
【问题描述】:

如何在 $query 中传递 _user_id 列值。这是有很多关系。我无法弄清楚如何将 RFX 的 user_id 用户输入到 $query where 条件中。

public function response_pricings(){
    return $this->hasMany('App\Models\Website\RFXRequestPricingResponse', ['rfx_request_id'=>'_rfx_request_id', 'user_id'=>'_user_id'])->selectRaw("*");
}

return RFXRequestSupplierResponded::select(
    'id as _id',
    'rfx_request_id as _rfx_request_id',
    'user_id as _user_id',
    'status',
    'is_qualified',
    DB::RAW('(SELECT name FROM users WHERE id=user_id) as user_name'),
    DB::RAW('(SELECT note FROM rfx_request_response_notes WHERE rfx_request_id='.$rfx_request_id.' AND user_id=rfx_request_suppliers_responded.user_id LIMIT 1) as note')
)
->with(
    [
        'response_pricings' => function ($query) {
            /*$query->where('user_id', $_user_id);*/
        }
    ]
)
->where('rfx_request_id',$rfx_request_id)
->get();

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    当您在模型上定义关系时,Laravel 将使用动态确定的外键或您指定的外键自动链接模型。因此,您无需将 user_id 传递给查询。 Laravel 会自动使用RFXRequestSupplierResponded 实例的user_id

    但是,您似乎正在使用多个外键将 RFXRequestSupplierResponded 链接到 RFXRequestPricingResponse 模型。 Eloquent 没有内置的支持。查看this question 的答案,了解如何添加对多个外键的支持。

    【讨论】:

      【解决方案2】:

      您使用use 将本地范围参数传递给闭包函数

      ... ->with(
              ['response_pricings' => function ($query) use ($_user_id) {
                  $query->where('user_id', $_user_id);
               }
              ]
            )
            ->where(....
      

      此问答中的更多信息:In PHP 5.3.0, what is the function "use" identifier?

      【讨论】:

      • 我需要传递 RFXRequestSupplierResponded 的“_user_id”列
      猜你喜欢
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 2018-12-09
      相关资源
      最近更新 更多