#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 = [], потому что в случае, если вы добавите еще один столбец в таблицу продуктов, вам также не придется менять свою модель.