Не удается сделать нестатический метод IlluminateDatabaseEloquentModel::GetTable() статичным в классе Appbill, Laravel

#php #laravel-5.2

#php #laravel-5

Вопрос:

Я создал метод в модели как :

 class bill extends Model
{
public static function getTable() {

    $tables = Bill::where('order_type', '0')
                ->where('table_no','<>','')
                ->groupBy('table_no')
                ->get();
    return $tables;
} }
  

и в контроллере я обращаюсь к этому методу как

 public function bill()
{
    $data = Bill::getTable();

    return view('bill.bills');
}
  

Он выдает ошибку, Cannot make non static method IlluminateDatabaseEloquentModel::getTable() static in class Appbill указанную в строке № 17. Я не понимаю, что не так?

Комментарии:

1. Вы должны сделать метод нестатическим, это позволит загружать класс базовой модели. Создайте экземпляр модели bill в вашем контроллере и вызовите его. попробуйте это и вернитесь сюда, если у вас возникнут проблемы

2. Я добавил эти две строки $bill = new Bill(); $data = $bill->GetTable(); теперь он не перенаправляется на просмотр, отображается черная страница

3. Разве это не должно быть Bill::where('order_type', '=','0') ?

4. это не имеет значения.. событие, если я пишу Bill::all(); я получаю ту же ошибку.

5. Проверьте свои журналы

Ответ №1:

Проблема в том, что Model абстрактный класс Eloquent, который является вашим родительским классом bill (вы не должны нарушать convetion и использовать bill and Bill в другом месте), имеет нестатический метод: getTable поэтому вы не можете переопределить его статическим способом. Пожалуйста, измените имя этого метода.

Ответ №2:

Возможно, вы выполнили расширения во встроенном классе Laravel. Вот и все.

 class Collection extends AppModelsFbAccount implements ArrayAccess, CanBeEscapedWhenCastToString, Enumerable
  

Здесь я наследую от AppModelsFbAccount , из-за этого возникает эта ошибка. Удалите наследование.

Спасибо.