Как добавить макрос в модель?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как добавить макрос в модель?

Сообщение Anonymous »

В Laravel модели имеют функцию getTable, которая позволяет нам запрашивать таблицу, связанную с моделью. В некоторых случаях мне нужно убедиться, что я не использую эту функцию, а вместо этого строго запрашиваю фактическое имя таблицы. (Если для модели указано свойство имени базы данных, результатом getTable будет имя_базы_данных.tableName.)
Чтобы избежать дублирования, я подумал, что можно элегантно прикрепить макрос к модели, но был разочарован, обнаружив, что это невозможно для абстрактных классов. Как мне этого добиться?
Желаемым результатом было бы добавить макрос в класс модели Laravel, сделав его доступным для всех моих моделей.

Код: Выделить всё

use Illuminate\Database\Eloquent\Model;

/**
* Get the table associated with the model.
* Without database name. (strict only table name)
*
* @return string
*/
Model::macro('getStrictTable', function () {
/** @var \Illuminate\Database\Eloquent\Model $this */
$tableNameParts = explode('.', $this->getTable());
return end($tableNameParts);
});
Невозможно создать экземпляр абстрактного класса Illuminate\Database\Eloquent\Model


Подробнее здесь: https://stackoverflow.com/questions/793 ... -the-model
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»