通过雄辩的模型获得结果

时间:2018-02-15 12:01:05

标签: php laravel relation laravel-eloquent

您好我的数据库中有一个表,其中包含一个整数值的列,实际上是另一个表的主键 表1:详细信息

column : subjects
value : 12,10,1,50,89,88

另一张表是主题,我应该从中获取结果。我想知道我是否可以使用我的模型获取它们,而不是每次我需要获取它们时在控制器中重复我的代码。 我知道你可以使用定义关系 $this->belongsTo()hasMany()视情况而定。我想看看如果我可以在Model上使用这个范围。
我要找的最终结果是从表主题

返回的json数据

1 个答案:

答案 0 :(得分:0)

我建议使用polymorphic relationship,而不是在单个数据库表字段中使用逗号分隔。

你会为每个协会创建一个新记录,这对你来说可能看起来很糟糕,但这确实是值得的,与Eloquent合作,所以你不需要添加自定义逻辑来爆炸这些id并手动关联。

students
    id - integer
    name - string

subjects
    id - integer
    name - string
    subjectable_id - integer
    subjectable_type - string

然后在你的模特中这样的事情

class Subject extends Model
{
    /**
     * Get all of the owning subjectable models.
     */
    public function subjectable()
    {
        return $this->morphTo();
    }
}

class Student extends Model
{
    /**
     * Get all of the post's comments.
     */
    public function subjects()
    {
        return $this->morphMany('App\Subject', 'subjectable');
    }
}

然后,您可以将主题附加到许多不同的模型,就像我在此处向学生展示的那样。

编辑:如果您希望对此数据的使用方式保持相同的解释,您可以在模型中执行此操作,但如果没有看到您尝试的逻辑,则很难说重复。