Невозможно использовать «списки» в отношениях «многие ко многим»

Моя версия Laravel 5.5.13.

Я создал отношения «многие ко многим» между моделью пользователя и моделью домашних животных. Домашние животные могут принадлежать нескольким пользователям.

Я пытаюсь сделать в своем методе update в контроллере, получить список всех связанных идентификаторов пользователей. Итак, я попытался:

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();
});

person Blagoh    schedule 03.10.2017    source источник
comment
как насчет $pet->users()->get()->lists('id') ? поскольку ->users() является классом отношения, а не массивом.   -  person Bagus Tesa    schedule 03.10.2017
comment
вау, спасибо, я должен был проверить API, прежде чем комментировать.   -  person Bagus Tesa    schedule 04.10.2017
comment
Спасибо @BagusTesa - я тоже виноват в этом :( Хотя я новичок в laravel, поэтому я все еще учусь читать и изучать документы :(   -  person Blagoh    schedule 04.10.2017


Ответы (2)


list() больше не доступен в Laravel. В качестве альтернативы вы можете использовать pluck() и собрать все предметы, подобные этому pluck()->all();

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

Ссылка на doc

person Mr. Pyramid    schedule 03.10.2017

laravel устарел, вместо этого метод lists() использует pluck.

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

person Arpita    schedule 03.10.2017