Laravel 5.7 переопределяет таблицу моделей по умолчанию - PullRequest
0 голосов
/ 25 ноября 2018

Я знаю, что могу переопределить таблицу в модели, выполнив

protected $table = 'my_custom_table';

Но есть ли способ обеспечить соблюдение соглашения об именовании таблиц, чтобы мне не приходилось делать это в каждой модели отдельно?

Например:

public function getTable(){
    return env('DB_PREFIX') . '_' . $module_name . '_' . $entity_name
}

1 Ответ

0 голосов
/ 13 декабря 2018

Как Romano sugested, я создал собственную модель, которая расширила бы Eloquent, и каждая последующая модель, которую я сделал, расширила бы мою вместо Eloquent.

namespace App;

use App\Traits\FindCaller;
use Illuminate\Database\Eloquent\Model;

class GenericModel extends Model
{
    use FindCaller;

    const CREATED_AT = 'creation_time';
    const UPDATED_AT = 'last_modified_time';
    const DELETED_AT = 'deleted_time';

    /**
     * Override to make the default model table name = "module_model"
     *
     * @return string
     */
    public function getTable()
    {
        if(!$this->table) {
            list($module, $model) = $this->getModelCallerEntities();
            return strtolower($module . '_' . $model);
        }

        return $this->table;
    }
}

Каждая последующая модель:

use App\GenericModel;

class Xyz extends GenericModel
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...