這關係到我的質詢時指:怎麼辦更新查詢上laravel使用DB流利::原料
Update table1 field with table2 field value in join laravel fluent
但由於這是一種不同的方法,現在,我只想問另一個問題:
你如何正確使用做一個DB:raw
更新?
我想用contents.type的值更新favorite_contents.type
,但它什麼也沒做,靜態設置1到favorite_contents.expired
正在工作。
這是我的代碼仍然不更新使用了DB::raw
即使類型:
$table = 'favorite_contents';
$contents = DB::table($table)
->join('contents', function($join) use($table){
$join->on("$table.content_id", '=', 'contents.id');
})
->whereIn("$table.content_id",$ids)
->update(array(
"$table.expired" => 1
));
DB::raw("UPDATE favorite_contents, contents SET favorite_contents.type = contents.type where favorite_contents.content_id = contents.id");
這之前,我使出那並不是上面的代碼不更新第一碼將不起作用以及:
$table = 'favorite_contents';
$contents = DB::table($table)
->join('contents', function($join) use($table){
$join->on("$table.content_id", '=', 'contents.id');
})
->whereIn("$table.content_id",$ids)
->update(array(
"$table.expired" => 1,
"$table.type" => "contents.type"
));
PS: 這是一個SQL編輯器完成工作時:
UPDATE favorite_contents, contents SET favorite_contents.type = contents.type where favorite_contents.content_id = contents.id
的確,這就是爲什麼他的DB :: raw()語句沒有執行任何操作。但是另一個顯示如何在update()中使用DB :: raw()的答案可能是大多數查看此問題的人可能正在尋找的東西。 – orrd