无法在多对多关系中使用“列表”

Unable to use `lists` in many to many relationship

我的Laravel版本是5.5.13。

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

我正在尝试在控制器的 update 方法中执行操作,获取所有关联用户 ID 的列表。所以我尝试了:

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

但是我得到:

Call to undefined method 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();
});

list() 在 Laravel 中不再可用。或者,您可以使用 pluck() 并像这样提取所有项目 pluck()->all();

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

引用 doc

laravel 已弃用 lists() 方法,改用 pluck。

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