我在'电影'表中创建了一个名为'slug'的行,我想要存储我的电影标题的slu ..问题是我已经有250部电影,我不想手动输入slug他们每个人所以我试图制作一个脚本来自动更新所有slu ..但我没有这样做:
这是我在FilmController.php中的代码:
class FilmController extends Controller {
public function film()
{
$title = DB::table('movies')->select('title');
$slug = str_replace(" ","-",$title);
DB::table('movies')->update(array('slug' => $slug));
}
}
这是我的路线:
Route::get('update','FilmController@film');
这是我去localhost / update时弹出的错误:
类Illuminate \ Database \ Query \ Builder的对象无法转换为字符串
有人可以告诉我,我怎么能改变我的代码,这样我就可以在所有电影中放入我的slug字段,电影的标题是' - '这些字之间的空格?
答案 0 :(得分:1)
$ title是一个包含所有标题的对象,而不是一个字符串,因此str_replace不会对它起作用 您可以尝试使用循环根据其标题更新每个记录
类似
$titles = DB::table('movies')->select('title','id')->get();
foreach ($titles as $title){
$slug = str_replace(" ","-",$title->title);
DB::table('movies')->where('id',$title->id)->update(array('slug' => $slug));
}
答案 1 :(得分:0)
如果您想创建一个更新或创建数据库默认信息的脚本,我建议使用seeder
。
Laravel Database Seeding doc
title
有一系列标题,而不是一个标题。