Php 我有3个表与关系。第一个表有另一个表的外部id,这两个表都有。我想知道获取数据的确切查询 3款-

Php 我有3个表与关系。第一个表有另一个表的外部id,这两个表都有。我想知道获取数据的确切查询 3款-,php,mysql,laravel,model-view-controller,Php,Mysql,Laravel,Model View Controller,1.1)产品型号- 类产品扩展模型 { 受保护的$table='product_table(TableName)'; 公共职能银行() { 返回$this->belongTomany(Bank::class,'Bank_table','Bank_id(ForeignKey)','id(PrimaryKey)'; } 公共功能产品_类() { 返回$this->belongToMany(ProductCategory::class,'ProductCategory_table','ProductC

1.1)产品型号-

类产品扩展模型
{
受保护的$table='product_table(TableName)';
公共职能银行()
{
返回$this->belongTomany(Bank::class,'Bank_table','Bank_id(ForeignKey)','id(PrimaryKey)';
}
公共功能产品_类()
{
返回$this->belongToMany(ProductCategory::class,'ProductCategory_table','ProductCategory_id(ForeignKey)','id(PrimaryKey)';
}
}
1.2)银行模式-

类库扩展模型
{
受保护的$table='bank_table(TableName)';
公共功能产品()
{
return$this->hasMany('App\Models\Product','id(PrimaryKey)','bank\u id(ForeignKey)';
}
}
1.3)产品类别模型-

类ProductCatgory扩展模型
{
受保护的$table='mudra5_productcategory';
公共功能mudra5_产品()
{
返回$this->hasMany('App\Models\Product');
}
}
  • 控制器代码-
  • public function cat()
    {
    $alldata=Bank::with(['product'])->first();
    dd($alldata->product[0]->product\U name);
    }
    
    3.路线-

    Route::get('/借用者_profile',借用者权限\statementController@cat')->名称(“mudra5_产品”)

  • 桌子-
  • 4.1)产品表-

    id(整数主键) 产品名称(varchar(100)) 银行识别码(外键) 类别识别码(外键) 1. p1 2. p2
    如果放置外键,则关系为HasMany belongsTo(1-N),例如,如果每个产品都有一个类别,则我们将类别_id的外键放置在产品表中,因为它只能是一个

    在您的例子中,您使用了belongToMany not belong,因此产品可以有许多类别,但您也在表中添加了一个外键,该外键与belongToMany不符

    你不能把许多和所有的东西放在一起。选择其中一个

    belongToMany是N-N关系的一个有力的关系,它们需要一个透视表,没有表可以容纳另一个_id,因此您可以创建一个同时具有id的picot表,该表将处理关系查询流量

    如果您想保护所呈现的关系,则需要5个表(而不是3个)

    产品 类别 银行 类别产品 银行产品

    产品 身份证件 产品名称 1. p1 2. p2
    belongtomany
    适用于多对多关系。由于每个产品只属于一家银行或一个类别,因此您需要
    belongsTo