2016-08-19 2 views
2

Я заметил, что я пишу имена таблиц базы данных довольно много и в разных файлах, когда я использую Query Builder. Если бы я изменил имена таблиц базы данных, мне пришлось бы искать и изменять довольно много строк в моем проекте. Является ли это проблемой, которую ребята из Laravel заметили и придумали решение?Laravel Query builder и имена таблиц

Мне нравится подход «Красноречивый», который использует модели классов вместо имен базы данных; но для некоторых запросов я думаю, что Query Builder - лучшее решение (хотя я не эксперт в этом вопросе).

ответ

-1

Как об использовании концепции объектно-ориентированного программирования. Laravel - это основа, поэтому никто не останавливает вас от использования базовой концепции PHP OOP. Это то, что я делаю:

Рассмотрим мой запрос, как:

$result=DB::table('myTable')->select()->get(); 

Что я могу сделать, это сделать класс, который содержит все tablenames:

class TableName 
{ 
    private $tableName= "myTable"; 
    public function getTableName() 
    { 
     return $this->tableName; 
    } 

    public function setTableName($table_name) 
    { 
     $this->tableName = $table_name; 
    } 
} 

Теперь я должен сделать вызовите метод, используя объект в файле, который я хочу использовать в таблице:

$name = new TableName() ; 
$result=DB::table($name->getTableName())->select()->get(); 

Использование везде, где вы нт. Я не думаю, что это лучшее решение, но оно работает для меня. Надеюсь, это поможет

+0

Спасибо, это выглядит хорошо; Я могу попробовать. – Olof84

2

Используйте это в запросе:

(new YourModel())->getTable() 

Пример:

DB:raw('SELECT * FROM '.(new User())->getTable().' WHERE id=3'); 
+0

Интересно. Можно ли это сделать без использования raw? – Olof84

+0

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

+0

есть моменты, когда у вас нет модели. например, если у вас уже установлена ​​система (например, magento). Теперь вы хотите использовать свою базу данных, вы не можете сделать модель этого, поскольку таблица не мешает вам, вам нужно только выбрать ее. Но для нормальной модели ваше решение идеально подходит +1 к вам –