laravel 5在数据库中更新

时间:2015-06-04 15:47:51

标签: laravel laravel-5

我在'电影'表中创建了一个名为'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字段,电影的标题是' - '这些字之间的空格?

2 个答案:

答案 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)

如果您想创建一个更新或创建数据库默认信息的脚本,我建议使用seederLaravel Database Seeding doc

title有一系列标题,而不是一个标题。