5

Query Builder を使用すると、データベース テーブル名をかなり多く、異なるファイルに書き込むことに気付きました。データベース テーブル名を変更する場合、プロジェクト内のかなりの数の行を検索して変更する必要があります。これは、Laravel 担当者が気づいて解決策を思いついた問題ですか?

データベース名の代わりにクラス モデルを使用する Eloquent アプローチが気に入っています。しかし、クエリによっては、クエリ ビルダーの方が優れたソリューションだと思います (私はこの問題の専門家ではありませんが)。

4

4 に答える 4

8

クエリでこれを使用します。

(new YourModel())->getTable()

例 :

DB:raw('SELECT * FROM '.(new User())->getTable().' WHERE id=3');
于 2016-08-19T10:18:55.723 に答える
6

すでに queryBuilder オブジェクトがある場合は、次のようなテーブル名を取得できます

$tableName = $query->getModel()->getTable();

于 2020-08-04T21:22:16.947 に答える
0

モデルクラスを拡張できるかもしれません。

CModel extend Model {

   protected static $tableName;

   public static getTableName(){
       if(static::$tableName)
          return static::$tableName;

       /* if you create a "reference break" you don't have to *
       /* create "protected static $tableName" row in your all model */

       $table = (new static())->getTable();
       return static::$tableName = &$table;
   }
}

YourModel extends CModel {...}

あなたが使用できるよりも

YourModel::getTableName()

私には良い考えがありません。

于 2018-12-18T16:32:48.580 に答える