laravel 如何建立多对多与一对多的关系?

g6baxovj  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(131)

假设我们有3个实体,分别命名为ABC。这些实体之间的关系如下:

A -- one to many --> B
B -- many to many --> C

示例表:

A
| id |
| -- |
| 1  |
| 2  |

B
| id | a_id |
| -- | -- |
| 1  | 1 |
| 2  | 2 |

B_C
| b_id | c_id |
| -- | -- |
| 1  | 1 |
| 2  | 2 |

C
| id |
| -- |
| 1  |
| 2  |

如果我们想在laravel中建立AC之间的关系,我们应该怎么做?这是可能的吗?

jk9hmnmh

jk9hmnmh1#

对于这些情况,您可以使用Has Many Through关系,有关更多信息,您可以按照laravel文档。要获得您的A和C模型之间的关系,您可以使用许多方法,如下所示:

<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
 
class A extends Model
{
    
    public function c()
    {
        return $this->hasManyThrough(
         C::class, 
         B::class,
        'a_id', // Foreign key on the a table...
        'b_id', // Foreign key on the b table...
        'id', // Local key on the a table...
        'id' // Local key on the b table...);
    }
}

传递给hasManyThrough方法的第一个参数是我们希望访问的最终模型的名称,而第二个参数是中间模型的名称。

相关问题