如何在eloquent中传递子查询中的父列值

时间:2018-01-18 11:39:37

标签: php laravel eloquent

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

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();

2 个答案:

答案 0 :(得分:1)

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

但是,看起来您正在使用多个外键将RFXRequestSupplierResponded链接到RFXRequestPricingResponse模型。 Eloquent没有对此的内置支持。看一下this question的答案,以获取有关如何添加对多个外键的支持的示例。

答案 1 :(得分:-1)

使用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?

相关问题