Laravel 5调用未定义的方法Illuminate \ Database \ Eloquent \ Collection :: tags();

时间:2015-12-05 11:15:37

标签: php laravel orm laravel-5 eloquent

我有两个使用多对多关系的模型。

class Tag extends Model
{
    protected  $table= 'tags';
    protected $primaryKey = 'id';
    protected $fillable = [
        'name'
    ];
    public function members()
    {
        return $this->belongsToMany('App\Data','data_tag','tag_id','data_id')
                               ->withTimestamps();
    }
}

和数据模型..

class Data extends Model
{
    protected  $table= 'dbaccess';
    protected $primaryKey = 'id';
    protected $fillable = [
        'username','password','email','added_at','user_id'
    ];

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function tags()
    {
        return $this->belongsToMany('App\Tag','data_tag','data_id','tag_id')
                                ->withTimestamps();
    }
}

data_tag链接表格。

当我调用函数

  $mani = App\Data::find(2);

然后

$mani->tags()->attach(3);

我收到以下错误。

[Symfony\Component\Debug\Exception\FatalErrorException]
Call to undefined method Illuminate\Database\Eloquent\Collection::tags()

任何人都可以帮我吗?

dd($mani) reply this

1 个答案:

答案 0 :(得分:1)

看来你正在收集一个集合而不是一个模型

尝试使用以下内容获取集合的第一个元素:

$mani = App\Data::find(2)->first();