Laravel Eloquent 建模多对多或一对多
Laravel Eloquent Model many-to-many or one-to-many
阅读 Laravel
Eloquent
模型文档后,我有点困惑。所以我有这个数据库结构:
task
id
name
description
tag
id
name
task_tag
id
task_id
tag_id
一个任务可能有零个、一个或多个标签。当然,一个标签可能与零个、一个或多个任务有关。
我试过了,但不确定:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model {
public function tags() {
return $this->hasMany('App\Tag');
}
}
hasMany()
是这种情况下的最佳解决方案,还是我需要使用其他方法?
您所描述的听起来像是典型的多对多关系(包括您概述的枢轴 table)。 hasMany()
旨在用于一对多关系。对于多对多,您应该使用 belongsToMany()
。所以你的任务模型看起来像:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
public function tags()
{
return $this->belongsToMany('App\Tag');
}
}
阅读 Laravel
Eloquent
模型文档后,我有点困惑。所以我有这个数据库结构:
task
id
name
description
tag
id
name
task_tag
id
task_id
tag_id
一个任务可能有零个、一个或多个标签。当然,一个标签可能与零个、一个或多个任务有关。
我试过了,但不确定:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model {
public function tags() {
return $this->hasMany('App\Tag');
}
}
hasMany()
是这种情况下的最佳解决方案,还是我需要使用其他方法?
您所描述的听起来像是典型的多对多关系(包括您概述的枢轴 table)。 hasMany()
旨在用于一对多关系。对于多对多,您应该使用 belongsToMany()
。所以你的任务模型看起来像:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
public function tags()
{
return $this->belongsToMany('App\Tag');
}
}