2013-03-17 35 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时发生了错误。一列有一个被数组覆盖的变量。所以我得到了这个错误信息。

这是非常混乱,因为我添加了新的代码时,我添加了点。由于错误来自哪里没有踪迹,所以错过了一件容易的事情。