Наиболее эффективный метод объединения двух наборов данных в laravel

Теперь вы можете взорвать меня, если я задаю вопрос слишком конкретно, говоря Laravel, но мне интересно, что является наиболее эффективным способом объединения двух наборов данных вместе с инструментами в Laravel.

Существует ли конкретное мышление, которое я должен использовать при выборе между использованием красноречивых отношений и объединений с построителем запросов? Или какие-либо недостатки в использовании построителя запросов для небольших или больших наборов данных, которые я должен учитывать?

Я создаю систему билета, в которой требуется только одно или два поля из таблицы пользователя, и, похоже, очень важно рассмотреть возможность использования отношений на этом этапе, но если потребности системы увеличиваются, это может привести к грязный код. Является ли это ситуацией, чтобы отношения там решались?

Существует ли какое-либо действие типа соединения при использовании красноречивых отношений, о которых я должен знать?

Если я действительно не понимаю, как я задаю этот вопрос, я попытаюсь переформулировать его.

1 ответ

Я думаю, что вы обнаружите, что я установил пару простых методов отношений в вашей модели Eloquent, которая развязывает мощь (и, следовательно, легкость и простоту) Eloquent. Например, лучше ли вы писать код пользовательского соединения или использовать такую ​​структуру:

foreach($user->tickets as $ticket) { ... etc ... }

Похоже, вы очень новичок в Laravel. Я настоятельно рекомендую прочитать страницы об отношениях в руководстве Laravel. Есть много отличных примеров. Также есть видео-учебник Laracast по отношениям здесь. У меня нет связи с этим сайтом.

Класс билета:

<!--?php
class Ticket extends Model {
 public function user() {
 return $this--->belongsTo('User');
 }
}

Класс пользователя:

<!--?php
class User extends Model {
 public function tickets() {
 return $this--->hasMany('Ticket');
 }
}

если у вас есть такая настройка таблиц:

tickets (table)
- id
- user_id
users (table)
- id

В этом примере предполагается, что модели находятся в глобальном пространстве имен. Затем вы можете захватывать пользовательские данные из билета следующим образом:

$ticket->user->first_name
$ticket->user->last_name

licensed under cc by-sa 3.0 with attribution.