Laravel Eloquent模型多对多或一对多

时间:2017-05-30 22:24:35

标签: php laravel laravel-eloquent

阅读List<A> listA; class A { String x; } List<String> listB; Laravel模型文档后,我有点困惑。所以我有这个数据库结构:

Eloquent

一个任务可能包含零个,一个或多个标签。当然,一个标签可能与零,一个或多个任务有关。

我试过了,但不确定:

task
   id
   name
   description

tag
   id
   name

task_tag
   id
   task_id
   tag_id
在这种情况下,

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Task extends Model { public function tags() { return $this->hasMany('App\Tag'); } } 是最好的解决方案,还是我需要使用别的东西?

1 个答案:

答案 0 :(得分:2)

您所描述的内容听起来像是典型的多对多关系(包括您概述的数据透视表)。 hasMany()旨在用于一对多关系。对于Many To Many,您应该使用belongsToMany()。所以你的任务模型看起来像:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    public function tags()
    {
        return $this->belongsToMany('App\Tag');
    }
}

Relevant docs