无法在多对多关系中使用`lists`

时间:2017-10-03 10:07:34

标签: php laravel laravel-5.5

我的Laravel版本是5.5.13。

我在User模型和Pet模型之间创建了多对多的关系。宠物可以属于多个用户。

我正在尝试使用控制器中的update方法,获取所有相关用户ID的列表。所以我试过了:

public function update(Request $request, Pet $pet)
{
    dd($pet->users()->lists('id'));
    $pet->update($request->all());
    return response()->json($pet, 200);
}

但是我得到了:

  

调用未定义的方法Illuminate \ Database \ Query \ Builder :: lists()

似乎没有lists()

如果我dd($pet->users()),它不会出错并显示大量信息。

*请你帮忙让lists()工作。

我在Pet模型中的关系是:

public function users()
{
    return $this->belongsToMany('App\User');
}

我在User模型中的关系是:

public function pets()
{
    return $this->belongsToMany('App\Pet');
}

以下是我对数据透视的迁移:

Schema::create('pet_user', function (Blueprint $table) {
    $table->integer('pet_id')->unsigned()->index();
    $table->foreign('pet_id')->references('id')->on('pets')->onDelete('cascade');

    $table->integer('user_id')->unsigned()->index();
    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

    $table->timestamps();
});

2 个答案:

答案 0 :(得分:1)

Laravel中不再提供{p> list()。或者,您可以使用pluck()并选择所有项目pluck()->all();

pluck('key')->all();
pluck()->all();

参考doc

答案 1 :(得分:1)

laravel已经弃用了lists()方法而不是使用pluck。

https://laracasts.com/discuss/channels/laravel/lists-deprecated-replacement