@elionalisov

Как реализовать ленивую подгрузку неизвестной модели laravel?

Вот такая модель уведомлений:
e793c21323.jpg
Вот так создаю новое уведомление
/**
 Создает в таблице modernote уведомление пользователю
	
 param $user_id - id пользователя, которому показываем уведомление
 param $model_type - класс модели, с которой связано уведомление (не обязательное)
 param $model_id - id модели, связанной с уведомлением (не обязательное)
 param $header - заголовок 
 param $message - message тело
 param $lang_var - переменная, которая подставляется в ту или иную языковую переменную уведомления
	
 return boolean
*/
public function create( $user_id, $model_type=null, $model_id=null, $header, $message, $lang_var )
{		
    $newModerNote = new ModerNote;

    $newModerNote->user_id = $user_id;
    $newModerNote->model_type = $model_type;
    $newModerNote->model_id = $model_id;
    $newModerNote->header = $header;
    $newModerNote->message = $message;
    $newModerNote->lang_var = $lang_var;

    $newModerNote->save();
		
    return true;		
}

bda2a63a58.jpg
Подскажите, как можно реализовать ленивую подгрузку, чтобы не делать на каждое уведомление отдельный запрос модели
$user_notifications = ModerNote::where('user_id', $user_id)
    ->orderBy('id','DESC')
    ->paginate(10);

Модель в уведомлении нужна, чтобы, например, сформировать ссылку на объект, по которому отправил пользователю уведомление.
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
greabock
@greabock
Могу
Во-первых: вы, скорее всего, путаете ленивую подгрузку с жадной. Вам, очевидно, нужна именно жадная.

А во-вторых: рекомендую ознакомится с этим разделом документации, в котором описываются полиморфные отношения. Очень похоже, что именно они помогут вам решить эту задачу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы