Красноречивые отношения с быстрой загрузкой

#php #mysql #laravel #eloquent #mariadb

#php #mysql #laravel #красноречивый #mariadb

Вопрос:

У меня есть следующий код для получения окончательных данных $result2 .

 $agent = auth()->user()->id;
$result = AppAgentStatus->select('callId')->where(function($query)use($agent) {
    $query->where('agentId', '=', $agent);
})->first();
$result2 = NULL;
if($result != NULL) {
    $id = $result->callId;
    $calls = AppCallStatus->where(function($query)use($id) {
       $query->where('callId', '=', $id);
    })->first();
    $id = $calls->callerId;
    $result2 = AppCallout->where(function($query)use($id) {
        $query->where('number', '=', $id);
    })->first();
}
  

Модели:

AgentStatus:

 protected $primaryKey = 'agentId';
  

CallStatus

 protected $primaryKey = 'callId';
  

Выноска: Первичный ключ — это строка id

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

Комментарии:

1. «Работает слишком медленно» и «использует слишком много оперативной памяти»?

Ответ №1:

Laravel имеет хорошую документацию

https://laravel.com/docs/5.8/eloquent-relationships

Если у вас есть опасения по поводу проблем с производительностью, вы можете следовать денормализации