Вызов функции-члена where() для не-объекта? Ларавель 5.2

я пытаюсь получить совпадающие значения из 2 таблиц, чтобы сделать запись пользователя.

Мой код:

$states = ['1','2'];
$cities = DB::table('cities')->get();
$state = $faker->randomElement($states);
$city= $faker->randomElement($cities->where('state_id',$state)->value('id')); 

Текущий ответ:

«Вызов функции-члена where() для не-объекта».

Редактировать 1. Переведено на английский для лучшего понимания.


person Andres Ariel    schedule 15.02.2016    source источник


Ответы (2)


Это должно быть что-то вроде следующего:

$states = ['1','2'];
$state = $faker->randomElement($states);
$cities = DB::table('cities')->where('state_id', $state)->lists('id')->all();
$city = $faker->randomElement($cities);
person user2094178    schedule 15.02.2016
comment
оно работает! теперь выдает ошибку. Объект класса stdClass не может быть преобразован в строку, но, по крайней мере, я могу с этим работать, спасибо! - person Andres Ariel; 15.02.2016
comment
Пожалуйста, попробуйте последнюю строку как $city = City::find($faker->randomElement($cities)); - person user2094178; 15.02.2016

попробуй это

$comuna = $faker->randomElement($comunas->where('region_id',$region[0])->where('region_id',$region[1])->get(); 
person paranoid    schedule 15.02.2016
comment
по-прежнему выдает ошибку Вызов функции-члена where() для не-объекта, я не знаю почему, я явно использую массив:/ - person Andres Ariel; 15.02.2016