Laravel отношения с пользовательским методом - PullRequest
0 голосов
/ 17 октября 2018

Проект таблицы:

project_id (int)
requestor_id (uuid)

Запросчик таблицы:

requestor_id (uuid)

Проект модели:

public function requestor() {
    return $this->hasOne('App\Models\Requestor', 'requestor_id', 'requestor_id');
}

Запросчик модели имеет один метод:

// this method return object users info from ldap
public function getLdapAttribute() {
    $ldapWrapper = new LdapWrapper();
    return $ldapWrapper->checkIfUuidExists($this->requestor_id, true);
}

Выберите все проекты с отношением запросчика:

$query = (new Project)->newQuery()->with(['requestor'])->get();

И Вопрос : Как я могу выбрать все проекты с отношением запросчика и на каждом объекте запроса объект вызова getLdapAttribute и вернуть всекак один объект?

Большое спасибо:)

Ответы [ 2 ]

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

Вы можете поместить имя этого атрибута "Ldap" в массив $ appends класса App \ Requestor, и Eloquent автоматически добавит свойство с именем ldap со значением, возвращаемым для метода getLdapAttribute.

Ссылка на официальную документацию Laravel для этой функции Eloquent!

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

Поскольку SQL-запрос метода getLdapAttribute не указан, мы можем сначала получить проекты, а затем выполнить итерацию и получить этот атрибут.

Если задан SQL-запрос getLdapAttribute, мы можем получить вседанные в одном запросе (здесь мы получаем атрибуты после первого запроса на выборку проектов).

$projects = Project::with(['requestor'])
->get()
->each(function ($project) {
    $project->requestor->getLdapAttribute();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...