这与我之前的一个问题有关:
使用join laravel fluent中的table2字段值更新table1字段
但由于现在这是一种不同的方法,我只想问另一个问题:
你如何正确地使用更新DB:raw?
我想favorite_contents.type用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");
Run Code Online (Sandbox Code Playgroud)
这是第一个在我使用上述代码之前没有更新的代码:
$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"
));
Run Code Online (Sandbox Code Playgroud)
PS:这在sql编辑器上完成时有效:
UPDATE favorite_contents, contents SET favorite_contents.type = contents.type where favorite_contents.content_id = contents.id
AMI*_*MIB 59
代码原始更新如下:
...->update( array(
'column' => DB::raw( 'column * 2' )
) );
Run Code Online (Sandbox Code Playgroud)
Iro*_*ind 41
DB::statement("UPDATE favorite_contents, contents SET favorite_contents.type = contents.type where favorite_contents.content_id = contents.id");
Run Code Online (Sandbox Code Playgroud)
尝试DB::statement不涉及输出内容的原始查询(选择).
Iva*_*rus 20
并且将在Laravel 5.2,Query Builder中进行类似,简单的实现:
DB::table('stores')
->where('id', $request)
->update(['visibility' =>DB::raw($value)]);
Run Code Online (Sandbox Code Playgroud)
此响应经过现场测试并正常运行
| 归档时间: |
|
| 查看次数: |
44665 次 |
| 最近记录: |