使用eloquent / fluent将行从一个表复制到另一个表而不重复

时间:2015-04-07 13:42:27

标签: sql laravel laravel-4 eloquent

 $product = Book::select('name', 'id', 'user_id')->where('books.user_id', '=', 1)
        ->whereNotExists(function($query)
        {
            $query->select(DB::raw(3))
                  ->from('music')
                  ->whereRaw('music.name = books.name');

        })
        ->get();

上面的代码从books表中为单个用户选择3行,其中books表和music表之间没有重复的名称。但是,我想要做的是将这些行复制到音乐表中。

所以我想这样做

$product = Book::select('name', 'id', 'user_id')->where('books.user_id', '=', 1) 

将这些行复制到没有重复名称的音乐表中?还有一种方法可以复制所有行而不必选择行数吗?

1 个答案:

答案 0 :(得分:0)

将$ product变量重命名为$ products,因为它不止一个。

然后从查询中保存到musuc表中意味着遍历产品:

// Get the books you want to copy
//using your query or you can also use (distinct()) to get unique records
// iterate through the books that have a unique name
foreach ($products as $product){
    // save them in your music table using either your model or an insert query
    $song = Music::create(array($product->name ...etc...));
}