laravel: невозможно использовать методы модели в контроллере для получения атрибута - PullRequest
0 голосов
/ 09 октября 2018

Я уже давно пытаюсь это сделать.Большую часть времени я решаю это с помощью аксессоров.В настоящее время я пытаюсь определить, существует ли столбец, и я создал в моей модели функцию, которая должна возвращать логическое значение.

Код модели:

class Inventory extends Model
{
    protected $attributes = ['inventory'];   
    protected $appends = ['colorThumb'];

    public function hasAttribute($attr){
      return array_key_exists($attr, $this->attributes);
    }
}

Код контроллера:

public function allInvOperation(Request $request){
    $inv = Inventory::where('is_deleted', 0)->with(['product', 'size','color'])->orderByDesc('id')->get();       
    if(!is_null($request->searchText)){
        dd($inv->hasAttribute('inventory'));

        $inv = Inventory::where('is_deleted', 0)->with(['product', 'size','color'])->orderByDesc('id');

        if($request->inv_filter == 'inventory'){
            $inv = $inv->where('inventory', 'like', "%".$request->searchText."%")->get();
        }
        if($request->inv_filter == 'code'){
            $inv = $inv->whereHas('product', function ($q) use ($request){
                $q->where('code', "%".$request->searchText."%");
            })->get();
        }
    }

ОШИБКА

Method Illuminate\Database\Eloquent\Collection::hasAttribute does not exist.

1 Ответ

0 голосов
/ 09 октября 2018

Код, над которым вы работаете hasAttribute, представляет собой Collection объектов, вам нужно использовать first в этом запросе, чтобы получить один результат, который вы позже сможете выполнить hasAttribute

...