То, что я пытаюсь достичь, есть в моей базе данных. У меня есть таблица с именем channel. Я использую класс elarquent laravel для доступа к этим свойствам из таблицы. Проблема, с которой я сталкиваюсь, заключается в том, что
имя таблицы – это столбец, а имя столбца – канал
поэтому при доступе к этому свойству выглядит так.
User::find(1)->channel->channel
Как я могу изменить это, чтобы сказать
User::find(1)->channel->name
Мы не можем изменить имя таблицы в базе данных.
Параметры, о которых я подумал:
1) Создавать представления для таблиц, которым нужны столбцы. Слишком грязный…
2) Использовать псевдоним столбца … laravel documentation … вздох .. нет подсказки как?
3) Используйте набор свойств с create_function, который будет вызывать этот-> канал, но я уверен, что он не будет работать, потому что laravel использует динамические свойства. и когда он заполняется в массиве, я уверен, что он изменит его на имя столбца.
Я мог бы в моей функции role_to / hasOne / hasMany изменить свойство на псевдоним имени, которое я хочу использовать, чтобы позже я мог его изменить. Я не знаю, как хорошо это сработает.
Есть предположения? очень признателен
Вы, вероятно, могли бы сделать это легко с помощью Accessors / Mutators.
class Channel extends Eloquent { public function getNameAttribute() { return $this->attributes['channel']; } public function setNameAttribute($value) { $this->attributes['channel'] = $value; } }