2017-02-14 3 views
1

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

$currentUser = PostTranslation::find($post->id); 

$previousUserID = PostTranslation::where('id', '<', $currentUser->id)->max('id'); 

$nextUserID = PostTranslation::where('id', '>', $currentUser->id)->min('id'); 

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

$previousUserID2 = PostTranslation::find($currentUser->id-1); 

но когда id = 0, что я получаю сообщение об ошибке.

+0

http://stackoverflow.com/a/27942973/465388 – igneosaur

ответ

1

Если ваш набор данных слишком велик, а мин может замедлить ваш sql.

Вы можете использовать first вместе с orderby, которые извлекают первую модель, соответствующую ограничениям запроса.

$currentUser = PostTranslation::find($post->id); 
    //order by descending order and take the first entry 
    $previousUser = PostTranslation::where('id', '<', $currentUser->id)->select('id','title')->orderby('id','desc')->first(); 
    $previous_id=$previousUser ->id; 
    $previous_title=$previousUser ->title; 
    //order by ascending order and take the first entry 
    $nextUser = PostTranslation::where('id', '>', $currentUser->id)->select('id','title')->orderby('id','asc')->first(); 
    $next_id=$nextUser ->id; 
    $next_title=$nextUser ->title; 
+0

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

+0

@DinaShaldoum Вам нужно только написать некоторые проверки, например. 'if ($ previousUser) // Делайте свой материал здесь'. – igneosaur

-1

Вот последний код я был использован в моем контроллере:

$previousUser = PostTranslation::join('posts', 'posts.id', '=', 'post_translations.post_id') 
     ->where('posts.id', '<', $currentUser->id) 
     ->select('posts.id','post_translations.title','post_image') 
     ->orderby('posts.id','desc') 
     ->where('post_translations.language', $language) 
     ->first(); 
+0

Я написал if ($ previousUser), прежде чем вызывать данные на мой взгляд, и он решен. –

+0

Это копия моего ответа, вы должны отметить правильный ответ вместо копирования ответа, он не поможет никому – sumit

Смежные вопросы