2013-03-17 5 views
4

У меня есть модель Item с HAS-много relationsship с points, как это: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, но если это то же самое, что я думаю, что вам нужно делать экземпляр? '$ item-> points() -> save (новая точка ($ points));'? – Robbo

+0

@ Robbo да Я пробовал это во-первых, я использую пример http://laravel.com/docs/database/eloquent#inserting-related-models, который, как ни странно, не работает. Получение того же сообщения об ошибке, если я создаю новый экземпляр. – Ms01

+1

Существует другой способ, который вы можете использовать. Сделайте элемент тем же, но когда дело доходит до точки, вы можете сделать '$ point = new Point (['ip' => $ ip]);' и затем '$ point-> save();' после чего вы присоедините точка к элементу с помощью '$ item-> points() -> attach ($ point-> id)'. Примечание. Я написал это из памяти, и это может быть неправильно ... – Robbo

ответ

1

После медленного прохождения кода по строкам я заметил, что произошла ошибка при сохранении элемента в первую очередь. У столбца была переменная, которая была перезаписана массивом. Поэтому я получил это сообщение об ошибке.

Это было очень запутанно, потому что я добавил новый код, когда добавил пункт. Поскольку не было никаких следов от того, откуда возникла ошибка, было легко пропустить.

Смежные вопросы