Это связано с одним из моих вопросов ранее:
Обновить поле table1 со значением поля table2 в свободном доступе laravel
Но поскольку сейчас это другой подход, я задам еще один вопрос:
Как правильно выполнить обновление с помощью DB:raw
?
Я хочу обновить favorite_contents.type
со значением content.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"
));
P.S: Это работает, когда выполняется в редакторе sql:
UPDATE favorite_contents, contents SET favorite_contents.type = contents.type where favorite_contents.content_id = contents.id