2013-03-17 67 views
4

關係,我有一個具有多對多relationsship模型Itempoints這樣的:Laravel,插入一個一對多與雄辯

public function points() { 
    return $this->has_many('Point'); 
} 

然後在我的控制器,我想,當用戶設置一些數據發佈了一個Item。所以,我不喜歡這樣寫道:

 $item = new Item; 
     $item->author = $author; 
     $item->description = ''; 
     $item->link = $link; 
     $item->source = $url['host']; 
     $item->title = $title; 
     $item->url_encoded = $url; 
     $item->save(); 
     $points = array(
      array('ip' => $ip) 
     ); 

     $item->points()->save($points); 

但是這給了我,我似乎得到每次一個錯誤我嘗試保存Point是:

Array to string conversion 

我能做些什麼來插入我的Point財產item_id是否正確?

+1

我不使用3,但如果這是4相同我認爲你需要做一個實例嗎? '$ item-> points() - > save(new Point($ points));'? – Robbo 2013-03-17 11:27:01

+0

@Robbo是的我首先嚐試了一下,我使用的例子http://laravel.com/docs/database/eloquent#inserting-related-models這一點令人驚訝的往往不起作用。如果我創建一個新實例,則獲取相同的錯誤消息。 – Ms01 2013-03-17 11:29:45

+1

還有另一種方法可以使用。做同樣的事情,但當談到這一點時,你可以做'$ point = new Point(['ip'=> $ ip]);'然後'$ point-> save();'指向具有'$ item-> points() - > attach($ point-> id)'的項目。請注意,我從內存中寫道,這可能是錯誤的... – Robbo 2013-03-17 11:32:21

回答

1

緩慢地逐行檢查代碼後,我發現在首先保存Item時發生了錯誤。一列有一個被數組覆蓋的變量。所以我得到了這個錯誤信息。

這是非常混亂,因爲我添加了新的代碼時,我添加了點。由於錯誤來自哪裏沒有蹤跡,所以錯過了一件容易的事情。