лучшая практика в области моделей и контроллеров laravel

#laravel #postgresql #model #controller

Вопрос:

Я учусь использовать laravel 8.~ с DB PostgreSQL 12.~ . Я хочу спросить, эффективен ли мой подход к извлечению данных из БД с помощью метода модели, как в приведенном ниже фрагменте кода, или нет? Спасибо.

Это фрагмент кода модели.

 class Product extends Model{
    protected $fillable = [
        'name',
        'price'
    ];

    static function getAllData(){
       return Product::get();
    }
 }
 

Это фрагмент кода контроллера.

 use AppModelsProduct;

class HomeController extends Controller{
    public function getHomePage(){
        return view('home', ['productData' => Product::getAllData()]);
    }
}
 

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

1. Добро пожаловать в SO … почему вы хотите вызвать одну функцию внутри другой функции ? если вы можете сделать это напрямую return view('home', ['productData' => Product::all()]);

2. Изучайте и придерживайтесь методов, описанных на этой странице.

Ответ №1:

Ты можешь им воспользоваться. Продукт, расширяемый из базовой модели, имеет метод получения всех данных.

 use AppModelsProduct;

class HomeController extends Controller{
    public function getHomePage(){
        return view('home', ['productData' => Product::all()]);
    }
}
 

Ответ №2:

Вместо $fillable = [‘имя’,’цена’] вы должны использовать $guarded = [], потому что в случае, если вы добавите еще один столбец в таблицу продуктов, вам также не придется менять свою модель.