Отношения Laravel с использованием условия ИЛИ в поле соединенияPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Отношения Laravel с использованием условия ИЛИ в поле соединения

Сообщение Anonymous »

Как создать связь в модели Laravel, которая использует условие ИЛИ для поля, используемого для присоединения к таблице при загрузке красноречивой модели, и которая будет работать с быстрой загрузкой и иметь возможность использовать все существующих функций отношений Laravel?
Я могу использовать атрибуты доступа и другие обходные пути, но не могу понять, как это сделать и заставить их работать ТОЧНО, как любые другие отношения Laravel.< /p>

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

user_connections


Имя
Тип



< tr>
id
bigInt|primary|auto_increment


< td>from_user_id
bigInt


to_user_id
bigInt


create_at
метка времени?


updated_at
метка времени?



У меня есть модель Laravel с именем UserConnection, которая использует приведенную выше схему таблицы.
Как определить связь в этой модели, которая может использовать либо поле from_user_id, либо поле to_user_id?
Цель состоит в том, чтобы иметь связь с именем userConnections в модели User, которую можно привязать к любому полю.
Пример желаемого синтаксиса:

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

class User {
...

// THE RELATIONSHIP METHOD NAME TO USE (DOESN'T HAVE TO BE `hasMany`)
public function userConnections(){
return $this->hasMany(
\App\Models\UserConnection::class, /* THE TARGET CLASS TO BE LOADED */
'from_user_id||to_user_id',        /* JOIN ON EITHER OF THESE FIELDS */
'id'                               /* THE ID OF THE USER IN THIS MODEL */
);
}
Я могу сделать это с помощью запроса и загрузить модели вручную. Но я хочу придерживаться формата отношений Laravel, чтобы другие участники этого проекта могли использовать отношения естественным образом.
Мне нужно заставить его работать с этой схемой.

Подробнее здесь: https://stackoverflow.com/questions/782 ... ning-field
Ответить

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

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

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

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

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