我有一个模型NewsCategory
,其中包含2个关系(将来可能会包含更多关系)。 NewsCategory
模型属于News
模型,其思想是根据用户选择的类别或仅提取“所有”新闻(即问题),对News
应用过滤器NewsCategory
关系属于不同的表,每个表都有自己的用途。
因此,在我的NewsCategory
模型中,我想使用字段table_id
和type
来访问关系,该字段告诉我它是headquarter
还是{{1 }},所以我的模型是
program
当我不按关系过滤并且我想要得到这样的东西时,问题就来了。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NewsCategory extends Model
{
//
public function headquarters()
{
return $this->belongsTo('App\Models\Headquarter','table_id');
}
public function programs()
{
return $this->belongsTo('App\Models\Program','table_id');
}
}
但这会导致错误,其中$noticia = Noticia::with('titles')
->with('descriptions')
->with('images')
->with(['categories' => function($categories){
//I want to get the relationship based on the type of the NewsCategory
//so when printing I can tell which category it belongs to based it the relationship existing
switch($categories->type){
case 'headquarter':
$categories->with('headquarters');
break;
case 'program':
$categories->with('programs');
break;
....
}
}])
->get();
那么我该怎么做呢?我尝试将类型放在Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$type
模型中,而不是News
模型中,但是我不知道如何访问关系函数中的父字段。