Красноречивый конструктор запросов получил «Исключение Badmethod Call» при использовании атрибута объекта в качестве входных данных для оператора where

#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}" Итак, что вы имеете в виду, что это целое число?