Laravel + MySQL - хранение пространств имен Eloquent - PullRequest
0 голосов
/ 17 октября 2018

Мне дали работать над этим проектом без всякой документации или связаться с разработчиком.Я заметил в дампе базы данных, что они хранят то, что выглядит как пространства имен PHP для моделей Eloquent в паре таблиц.Например, в таблице адресов есть строковый столбец с именем «object_type», значение которого всегда равно «App \ Entities \ Client».Я искал во всем проекте код PHP, который будет использовать это значение.Надеюсь, чтобы дать мне понимание его цели.Не к моему удивлению, проект никогда не использует это значение.Я просто вижу жесткое кодирование этих значений при вставке в БД.

Мой вопрос , это что-то вроде практики проектирования баз данных и / или ORM-моделирования?Если да, не могли бы вы объяснить, как это можно использовать в простом практическом смысле?

Может быть, это была какая-то концепция, разработанная разработчиком, и она никогда не развивалась.Это интересная идея, но идея объединения через MySQL на условной строке звучит как пытка.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Я не уверен, о чем думают разработчики.

Но представьте, что мы на форуме с веткой и ответами на каждую ветку.Возможно, мы хотим иметь таблицу Избранное , где мы можем сохранять ответы и темы.

Чтобы сделать это, нужно иметь столбец в таблице favourites с именем "object_type" (просто использовать тот же термин, что и в вашем случае), а затем, когда мы сохраняемМы можем использовать объект в базе данных с помощью eloquent:

$favourite->object_type = get_class($thread); //or get_class($reply) in case we want a reply
$favourite->save(); 

Таким образом, пространство имен этого класса будет сохранено в базе данных.Но Laravel распознает его, когда мы получим его из базы данных.

Надеюсь, что этот холод будет полезным.

0 голосов
/ 17 октября 2018

Похоже на Laravel полиморфные отношения :

Пользовательские полиморфные типы.
По умолчанию Laravel будет использовать полное имя класса для хранениятип связанной модели.

И, да, это действительный метод моделирования, хотя пуристы справедливо утверждают, этот метод злоупотребляет нормальной формой.

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