【问题标题】:laravel connect table with one to many relationshiplaravel 用一对多关系连接表
【发布时间】:2018-10-01 01:00:20
【问题描述】:

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

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

我在CategoryJournalistSite 模型中定义了articles() 关系。

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(); 的表,并没有写下外国 -> 参考;

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    你好克里斯蒂娜,

         $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-many1

    【讨论】:

      【解决方案2】:

      你可以这样做:

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

      【讨论】:

        【解决方案3】:

        您可以在每个模型(类别、记者和网站)中定义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);
        

        【讨论】:

        • 一个数据插入3次可以吗?
        • 最后的数据只会插入一次,category_id和journal_id开始填写
        猜你喜欢
        • 2018-06-14
        • 1970-01-01
        • 2021-12-10
        • 1970-01-01
        • 2015-03-22
        • 1970-01-01
        • 2010-11-25
        • 1970-01-01
        • 2019-09-04
        相关资源
        最近更新 更多