#php #laravel #eloquent #illuminate
Вопрос:
Я использую красноречивый PHP в качестве ORM и внедряю конструктор запросов для своих веб-приложений.
Обычно это работает, когда код выглядит так.
$builder = Area::query()->limit(30);
if ($subDistrictCode = $request->getParam('sub_district_code')) {
$builder->where('sub_district_code', $subDistrictCode);
}
if ($districtCode = $request->getParam('district_code')) {
$builder->where('district_code', $districtCode);
}
$areasCount = $builder->count();
if ($limit = $request->getParam('length')) {
$builder->limit($limit);
}
if ($offset = $request->getParam('start')) {
$builder->offset($offset);
}
$areas = $builder->orderBy('province','ASC')->get();
Но когда я использую атрибут из объекта, я получил эту ошибку:
Вызов неопределенного метода ErdkkМоделиОбласти::getIdAttribute()
Код выглядит так.
$builder = Area::query()->limit(30);
if ($subDistrictCode = $request->getParam('sub_district_code')) {
$builder->where('sub_district_code', $subDistrictCode['id']);
}
if ($districtCode = $request->getParam('district_code')) {
$builder->where('district_code', $districtCode);
}
$areasCount = $builder->count();
if ($limit = $request->getParam('length')) {
$builder->limit($limit);
}
if ($offset = $request->getParam('start')) {
$builder->offset($offset);
}
$areas = $builder->orderBy('province','ASC')->get();
Комментарии:
1. Можете ли вы поделиться dd кода $subistrictcode?
2. « $код подрайона = { идентификатор: 12345 } «
3. Это выглядит странно для меня, но больше всего похоже на строку json. Сначала вам нужно расшифровать (
json_decode($subDistrictCode)
) его.4. я проверил, что тип данных является целочисленным, поэтому уже декодирован
5. Вы получили доступ к идентификатору так же, как получили бы доступ к ключу идентификатора массива.
dd
вход в массив приведет к следующему:array:1 [ "id" => 12345 ]
. Иdd
в массиве, закодированном в формате json, возникнет:"{"id":12345}"
Итак, что вы имеете в виду, что это целое число?