根据字段值获取关系

时间:2018-06-30 00:19:29

标签: php laravel-5 eloquent

我有一个模型NewsCategory,其中包含2个关系(将来可能会包含更多关系)。 NewsCategory模型属于News模型,其思想是根据用户选择的类别或仅提取“所有”新闻(即问题),对News应用过滤器NewsCategory关系属于不同的表,每个表都有自己的用途。

因此,在我的NewsCategory模型中,我想使用字段table_idtype来访问关系,该字段告诉我它是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模型中,但是我不知道如何访问关系函数中的父字段。

0 个答案:

没有答案