@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);

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

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

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

Войти через центр авторизации
Похожие вопросы