#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
, из-за этого возникает эта ошибка. Удалите наследование.
Спасибо.