2014-02-10 27 views
1

我正在試圖在種子中使用ID數據透視表。播種和數據透視表?

$id = DB::table('products')->insertGetId(array(
     array(
      'title' => 'Product A', 
      'published' => 1 
     ) 
    )); 

    DB::table('product_user')->insert(array(
     array(
      'product_id' => $id, 
      'user_id' => '9999999999' 
     ) 
    )); 

以上是最好的方法嗎?通過insertGetId獲得一個id,然後把它放在數據透視表中有沒有更好的方法?

而且上面的方式給出了一個錯誤:

[ErrorException]                
preg_replace(): Parameter mismatch, pattern is a string while replacement i 
s an array 

我懷疑的$ id是一個數組,我怎麼能得到InsertGetId返回一個int?

回答

1

那麼,你可以print_r它並尋求id屬性,然後在第二次插入時調用$id->attribute

但是...

「我自己」,我喜歡用雄辯。主要原因是:'因爲它太神dam FUN。真的,雄辯的這是我在編程世界中見過的最漂亮的事情之一。我以爲.NET是一個軟件的主人(雖然我還年輕,天真),但一旦遇到Laravel/Eloquent,我就變得如此AMAZED

這就是說,在我的愚見,使用雄辯是做到這一點的最佳方式!

我假設你有一個名爲products的表,另一個表叫users,你有一個product_user表來建立連接。使用口若懸河,你可以簡單地這樣做:

$user = User::find($user_id); 
$product = Product::find($product_id); 

$product->user->attach($user); 

...我reacomend這種做法有幾個原因,但第一個是:這樣的方式更可讀

那麼,我希望我的回答不會太冗長,並且希望你和其他人。

+0

謝謝,你如何插入這個例子的數據,然後得到它的ID,所以你可以使用它的查找? – panthro

+0

您需要已經插入'user'和'product'。你可以通過聲明一個新的產品/用戶模型對象來實現。 '$ product = new Product;',把數據存入''product-> save()'e,然後通過$ product-> id'來保存。同樣適用於'user'。 –

+0

謝謝,但正如最初所問,這將如何與種子工作? – panthro