laravel以一对多关系连接表

时间:2018-10-01 01:00:21

标签: php laravel

我正在使用laravel php mysql。 我有四个桌子

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

我已经在articles()CategoryJournalist模型中定义了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 :(得分:0)

你好克里斯蒂娜,

     $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

答案 1 :(得分:0)

您可以执行以下操作:

$site = Site::findOrFail(1);
$site->articles()->create(['title'=>'title', 'body'=>'body']); // use create() or insert()

答案 2 :(得分:0)

您可以在每个模型(类别,新闻工作者和网站)中定义import numpy as np three = np.outer(first,second).flatten() # array([ 6, 7, 8, 12, 14, 16, 18, 21, 24]) 方法

articles

然后从模型中提取适当的记录,并像在网站上一样保存它们

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