[英]Passing external elements to the model in a select query with Eloquent
[英]How to escape a query using an Eloquent model select?
DB::select
具有第二個參數,如此處所述 ,而Eloquent::select
沒有。
這是我的查詢:
Feature::where('company_id', Auth::user()->company_id)
->select('id','name',DB::raw("exists(select * from vehicle_features vf where vf.vehicle_id=$id and vf.feature_id=feature.id) as `checked`"))
->orderBy('name')->get(),
如何確保$id
正確轉義?
->select(
'id',
'name',
DB::raw(
"exists(select * from vehicle_features vf where vf.vehicle_id="
. DB::getPdo()->quote($id)
. " and vf.feature_id=feature.id) as `checked`"
)
)
您可以使用PDO或更容易地手動將綁定添加到查詢:
Feature::select(
'id',
'name',
// replace $id here
DB::raw("exists(select * from vehicle_features vf where vf.vehicle_id=? and vf.feature_id=feature.id) as `checked`"))
// and add this part
->addBinding($id)
->where('company_id', Auth::user()->company_id)
->orderBy('name')->get();
編輯:如下面的注釋中所述,綁定是bug和方法順序確實很重要,因此上述內容將按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.