将 where 条件应用于多态关系中的相关模型 laravel 8
Apply where condition to related models in polymorphic relation laravel 8
我在多态关系中遇到一个问题,我无法使 whereHas 起作用。关系代码对 return 相关模型工作正常,但需要将 where 条件应用于与多态关系相关的模型关系?
我的多态关系是由两个模型映射的。例如:Events 和 Meetings 这两个模型都有自己的关系来存储他们的受让人(属于许多人)我需要将 where 条件应用于受让人关系以获取所需的数据,在我的多态关系中,我得到了与受让人的数据,但不是与已应用条件。
class MainEvant extends Model
{
public function eventheadable()
{
return $this->morphTo('eventhead', 'event_type_id', 'event_id')
->morphWith([ Events::class=>['assignee'],
Meeting::class=>['assignee'], ]);
}
}
我最近也遇到了类似的问题,我是这样解决的,不知道代码质量如何
在你的控制器中,
MainEvant::with('eventheadable')->whereHasMorph('eventheadable',Events::class,function ($query) {
$query->whereHas('assignee', function ($q) {
$q->where(); // Your Condition
});
})->orwhereHasMorph('eventheadable', Meeting::class,function ($query) {
$query->whereHas('assignee', function ($q) {
$q->where(); // Your Condition
});
})->get();
也可以在官方文档中查看,
文档:https://laravel.com/docs/8.x/eloquent-relationships#querying-morph-to-relationships
我在多态关系中遇到一个问题,我无法使 whereHas 起作用。关系代码对 return 相关模型工作正常,但需要将 where 条件应用于与多态关系相关的模型关系?
我的多态关系是由两个模型映射的。例如:Events 和 Meetings 这两个模型都有自己的关系来存储他们的受让人(属于许多人)我需要将 where 条件应用于受让人关系以获取所需的数据,在我的多态关系中,我得到了与受让人的数据,但不是与已应用条件。
class MainEvant extends Model
{
public function eventheadable()
{
return $this->morphTo('eventhead', 'event_type_id', 'event_id')
->morphWith([ Events::class=>['assignee'],
Meeting::class=>['assignee'], ]);
}
}
我最近也遇到了类似的问题,我是这样解决的,不知道代码质量如何
在你的控制器中,
MainEvant::with('eventheadable')->whereHasMorph('eventheadable',Events::class,function ($query) {
$query->whereHas('assignee', function ($q) {
$q->where(); // Your Condition
});
})->orwhereHasMorph('eventheadable', Meeting::class,function ($query) {
$query->whereHas('assignee', function ($q) {
$q->where(); // Your Condition
});
})->get();
也可以在官方文档中查看,
文档:https://laravel.com/docs/8.x/eloquent-relationships#querying-morph-to-relationships