首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel RelationShips雄辩的Laravel (5张表)

Laravel RelationShips雄辩的Laravel (5张表)
EN

Stack Overflow用户
提问于 2021-01-26 19:31:16
回答 2查看 56关注 0票数 0

我有5张桌子

  • 产品

-类别

- SubCategories

-马克

-供应商

我想知道如何与产品模型结构建立关系:

代码语言:javascript
复制
 namespace App\Models\Products;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use HasFactory;
    protected $fillable = [.... ];

    public function categorie(){
      return $this->belongTo(categories::class);
    }

    public function sub_categorie(){
      return $this->belongTo(sub_categorie::class);
    }

    public function marks(){
      return $this->belongTo(marks::class);
    }

    public function suppliers(){
      return $this->belongTo(suppliers::class);
    }
}

我想知道它是否正确?另一个问题是如何看待其他模式的关系,如供应商,类别,SubCategories .

EN

回答 2

Stack Overflow用户

发布于 2021-01-27 01:11:39

这取决于所涉及的基数和foreign_keys。

产品

-类别

- SubCategories

-马克

-供应商

您给我的上下文,我猜每个表都取决于前面的表,就像您给出的上下文中显示的那样。如果是这样,那么您可以执行以下操作:

代码语言:javascript
复制
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Suppliers extends Model
{
    protected $fillable = [.... ];

    public function mark()
    {
        return $this->belongsTo(Mark::class);
    }
}
代码语言:javascript
复制
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Marks extends Model
{
    protected $fillable = [.... ];

    public function subCategorie()
    {
        return $this->belongsTo(SubCategorie::class);
    }
}
代码语言:javascript
复制
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class SubCategory extends Model
{
    protected $fillable = [.... ];

    public function categorie()
    {
        return $this->belongsTo(Categorie::class);
    }
}
代码语言:javascript
复制
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Categorie extends Model
{
    protected $fillable = [.... ];

    public function categorie()
    {
        return $this->belongsTo(Product::class);
    }
}
代码语言:javascript
复制
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    protected $fillable = [.... ];
}

有关depht休眠的更多信息,您可以参考关于laravel:https://laravel.com/docs/8.x/eloquent-relationships上的关系一节。

票数 0
EN

Stack Overflow用户

发布于 2021-01-26 21:12:43

请使用正确的关系名称,而不是“类别”写“类别”在功能名称,与拉拉将自动识别外键。

示例:

代码语言:javascript
复制
public function category(){
  return $this->belongTo(categories::class);
}

public function sub_category(){
  return $this->belongTo(SubCategory::class);
}

public function mark(){
  return $this->belongTo(Mark::class);
}

public function supplier(){
  return $this->belongTo(Supplier::class);
}

如果您有任何问题,请给我看看您的“模型”文件夹。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65908019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档