在 laravel 中使用关系创建模型

Posted

技术标签:

【中文标题】在 laravel 中使用关系创建模型【英文标题】:Create model in laravel with relations 【发布时间】:2017-07-30 03:17:58 【问题描述】:

如何在 Laravel 5.x 中使用关系从数据库创建模型?

我正在使用此命令创建模型,但它显示了数据库架构中的任何关系:

Artisan::call('make:model', array("name"=>'Modules/Admin/Models/Campaign'));

【问题讨论】:

你必须自己定义你的关系:) laracasts.com/series/laravel-from-scratch-2017/episodes/7 我认为应该有办法解决,因为可能会有一个包含大量关系的大型数据库。 【参考方案1】:

你必须自己定义你的关系,laravel 不能为你做这件事。

public function relation1()

   $this->hasMany('CLASS_NAME', 'FK');

【讨论】:

【参考方案2】:

假设我们有一个商店,其中包含许多不同品牌的产品。所以在这种情况下,我需要创建一对多关系,因为每个品牌都有很多产品,而每个产品只有一个品牌。所以让我们创建我们的通过使用工匠命令模型。

  php artisan make:model Product -m  //  "-m" creates tables for us. 
  php artisan make:model Brand -m          

让我们建立关系;

在“产品”模型中,我正在为关系创建品牌功能

   public function brand ()

        $this->belongsTo('App\Brand')  ;
   

为了清楚地理解这个声明,请这样阅读。 “产品属于,品牌”,如果它在逻辑上是正确的,而不是你在正确的道路上。

相同的逻辑对反向关系有效,但这次你不能使用 belongsTo 因为它已经被使用过,所以使用“has many”更合乎逻辑 在“品牌”模型中,我正在为关系创建品牌功能

   public function products()

        $this->hasmany('App\Product')  ;
   

读作“品牌有很多产品”。

【讨论】:

是的,你在这里写的是 write ,但现在我有 200 多个包含更多关系的表的数据库。现在我怎样才能得到一对一的关系,或者它是一对多的关系,或者每个模型中的其他东西? Laravel 中是否有任何方法可以在模型中添加这些关系?就像在 Hibernate (JAVA) 中一样,在从数据库创建类时,它会自动生成这些关系。

以上是关于在 laravel 中使用关系创建模型的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 中使用关系创建模型

在Laravel中创建记录后发送通知

Laravel - 向工厂创建的模型添加关系

Laravel,按最新创建的子关系排序模型

在 Laravel 中模拟具有关系的模型

在 Laravel 中模拟具有关系的模型