2016-08-29 3 views
0

У меня есть две таблицы, новости и news_links. Таблица новостей выглядит так (id, title, body, date_published), и news_links выглядят так (id, news_id, url).Laravel вставить массив массивов с внешними ключами

Я пытаюсь построить запрос, где я могу вставить новости массив:

array( 
    array(
    "id" => "123456", 
    "title" => "First Title", 
    "body" => "First body text", 
    "date_published" => "01-01-16" 
) 
    array(
    "id" => "22222", 
    "title" => "Second Title", 
    "body" => "Second body text", 
    "date_published" => "01-01-16" 
) 
) 

Этот массив будет содержать несколько массив, это всего лишь пример.

Ссылки, связанные с этими новостями, также будут вставлены.

array(
    array(
    "0" => "1", 
    "1" => "123456", 
    "2" => "img_url" 
) 
    array(
    "0" => "2", 
    "1" => "123456", 
    "2" => "img_url" 
) 
    array(
    "0" => "2", 
    "1" => "22222", 
    "2" => "img_url" 
) 
) 

Должен ли я построить цикл по каждому элементу и запустить несколько запросов или есть способ запустить один запрос и вставить все в обе новости и news_links?

ответ

1

Нет, вы не можете использовать один запрос для вставки данных в две разные таблицы. Однако вы можете комбинировать несколько вложений для одной таблицы в одном запросе. Это будет выглядеть

INSERT INTO news_links VALUES(1,123456,'url'),(2,123456,'url'),(2,22222,'url'); 
+0

Так что придется делать какие-то Implode() на моем массиве для построения запроса я взять его? –

+0

В Laravel вы можете просто сделать это как \ DB :: table ('table name') -> insert ([['id' => 1, 'news_id' => 123456, 'url' => 'url'], [], []]) @JesperAndersen –

+0

Мне нужно будет использовать DB :: insert(), так как я использую «insert ignore into» table, но хорошо знать, что я могу использовать Query Builder как это. Спасибо! –

0

Я думаю, что это простое решение NewsLink::insert(array);

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

  • Нет связанных вопросов^_^