laravel соединяет таблицу с отношениями один ко многим - PullRequest
0 голосов
/ 01 октября 2018

Я использую laravel php mysql.У меня есть четыре таблицы

category   => id, name
site       => id, name, link
journalist => id, name
article    => title, body, journalist_id, site_id, category_id 

Я определил articles() отношение в Category, Journalist и Site моделях.

public function articles(){
    return $this->hasMany('App\Article');
}

Когда я вставляю данные в статьютаблица, как я могу это сделать.

$site = Site::findOrFail(1);
$article = new Article(['title'=>'title', 'body'=>'body']);
$site->articles()->save($article);

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

$article = new Article([
    'title'         => 'title',
    'body'          => 'body',
    'category_id'   => 1,
    'journalist_id' => 1,
    'site_id'       => 1
]);
$article->save();

Я создал таблицу, которая $table->integer('category_id')->unsigned()->nullable(); и не записывал внешние ссылки ->;

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Вы можете сделать что-то вроде этого:

$site = Site::findOrFail(1);
$site->articles()->create(['title'=>'title', 'body'=>'body']); // use create() or insert()
0 голосов
/ 01 октября 2018

вы можете определить articles метод в каждой модели (категория, журналист и сайт)

public function articles()
{
   return $this->hasMany('App\Article');
}

, затем извлечь соответствующую запись из моделей и сохранить их, как вы делали с сайтом

$site = Site::findOrFail(1);
$category = Category::findOrFail(1);
$journalist = Journalist::findOrFail(1);

$article = new Article(['title' => 'title', 'body' => 'body']);

$site->articles()->save($article);
$category->articles()->save($article);
$journalist->articles()->save($article);
0 голосов
/ 01 октября 2018

Здравствуйте, Кристина,

     $article = new Article(); 
     $article->title = $your_title 
     $article->name = $your_article_name;
     $article->site_id = $your_site_ID;
     $article->category_id = $your_category_ID;
     $article->journalist_id = $your_journalist_ID //or Auth::id() when authenticated user.
     $article->save();

Теперь вы можете использовать метод статей, см. Полное руководство [https://laravel.com/docs/5.7/eloquent-relationships#one-to-many 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...