【发布时间】:2021-06-14 16:25:51
【问题描述】:
我正在做一个使用 Laravel 8/Eloquent 的项目,我有以下模型和关系:
一个项目有很多场景,一个场景属于一个标签。
我收到了一个新需求,有些标签每个项目只能使用一次(仅限一个场景)。
我的做法是在标签表中添加一个新列,名为“unique”,这样我就知道这个标签只能使用一次:
id | name | unique | created_at
-----------------------------------------
1 | ADPDF | false | 2017-01-30 13:22:39
-----------------------------------------
2 | ADPDF_FINAL | true | 2017-01-30 13:23:42
我正在使用 TagController 将所有标签发送给客户端,现在我需要一种方法来仅发送非唯一标签或唯一且未使用的标签。
我当前的控制器方法:
public function index(Request $request) {
return TagResource::collection(Tag::all());
}
关系:
class Project extends Model
{
use HasFactory, Historyable;
public function scenarios() {
return $this->hasMany(Scenario::class);
}
}
class Scenario extends Model
{
use HasFactory, Historyable;
public function tag() {
return $this->belongsTo(Tag::class);
}
}
class Tag extends Model
{
use HasFactory;
public function scenarios() {
return $this->hasMany(Scenario::class);
}
}
任何想法我可以如何解决这个问题?提前谢谢!!!
【问题讨论】:
-
你能发布你的关系模型
-
你可以这样做
TagResource::distinct()->get(['column_name']); -
@Basharmal,我添加了关系
标签: laravel api eloquent laravel-8