Laravel 可以和不能加载相关查询
我现在在胡思乱想,我想不出是什么问题 这是我的设置: 评分模型通过如下查询具有许多标记:Laravel 可以和不能加载相关查询,laravel,eloquent,Laravel,Eloquent,我现在在胡思乱想,我想不出是什么问题 这是我的设置: 评分模型通过如下查询具有许多标记: class Score extends Model { ..... public function tags() { return $this->hasMany('App\ScoreTag', 'score_id') ->leftJoin('tags', 'score_tags.tag_id', '=', 'tags.tag_id')
class Score extends Model
{
.....
public function tags()
{
return $this->hasMany('App\ScoreTag', 'score_id')
->leftJoin('tags', 'score_tags.tag_id', '=', 'tags.tag_id')
->select('tags.*');
}
}
我使用这个包通过API url加载关系。从客户端使用
一切都很好,标签和分数一起包含和检索。但是当我尝试使用
Score::with('tags')->get();
…在后端,未提取标记。我在另一个项目中有一个类似的设置,效果很好
显示的结果没有如下所示的标记:
"tags": []
我目前使用的是laravel 5.4,我想知道是否有什么东西我在加载相关查询时遗漏了?从您的查询判断,您似乎希望通过ScoreTag模型选择评分模型拥有的所有标记模型。在关系定义中执行连接和自定义选择不会像那样工作 您最好尝试使用关系来实现此功能
function tags()
{
return $this->hasManyThrough(Tag::class, ScoreTag::class);
}
当您使用
App\ScoreTag
作为目标模型时,为什么您的关系查询只选择tags
列?它不应该是$this->有很多吗('App\Tag',…
?请参见下面的答案Hanks,但在使用Bruno软件包时,它正在工作…这就是为什么我有点困惑的原因。hasmanythrough在我之前尝试时不起作用。我将再次尝试。奇怪的是,标签实际上已提取,但在使用postman时,结果中不会显示。但是当我调用Score::find(1)时->它们实际上就在那里