Jak wykonać kwerendę aktualizacyjną na laravel płynnie używając db :: raw
Jest to związane z jednym z moich wcześniejszych pytań, gdzie:
Zaktualizuj pole table1 o wartość pola table2 w laravel fluent
Ale ponieważ teraz jest to inne podejście, zadam jeszcze jedno pytanie:
Jak poprawnie wykonać aktualizację za pomocąDB:raw
?
Chcę zaktualizowaćfavorite_contents.type
z wartością content.type, ale nic nie robi, statyczne ustawienie od 1 dofavorite_contents.expired
działa.
To jest mój kod, który nadal nie aktualizuje typu, nawet gdyDB::raw
użyto:
$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");
Jest to pierwszy kod, który nie aktualizuje się, zanim nie skorzystam z powyższego kodu, który również nie działa:
$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"
));
P.S: To działa, gdy skończysz na edytorze sql:
UPDATE favorite_contents, contents SET favorite_contents.type = contents.type where favorite_contents.content_id = contents.id