2016-11-22 5 views
2

У меня есть users, images и image_user таблиц. Я стараюсь загружать и получать всех пользователей изображениями, но limit изображений только 4.Laravel Eloquent query 'with'

Думайте об этом как о галерее. Где пользователь может иметь один или несколько изображений

пользователя Модель

public function images() 
{ 

    return $this->belongsToMany(Images::class); 
} 

Это мой запрос до сих пор.

User::with(['images' => function ($query) { 
    $query->limit(4); 
    } 
])->get(); 

Этот запрос возвращает пользователя, но с пустыми отношения (изображения)

Любая помощь будет оценена.

Cheers

ответ

0

Используйте take(), чтобы получить только 5 изображений.

$users=User::with('images')->get(); 
foreach($users as $user) 
{ 
    echo $user->name; 
    foreach($user->images->take(5) as $image) 
    { 
     echo $image; 
    } 
} 
+0

Это только первый пользователь. ОП заявила, что им нужно забрать всех пользователей. –

+0

@JosephSilber отредактирован. и разве это невозможно? –

+0

Теперь вы загружаете все изображения из БД. –

1
$user = User::with('images')->limit(5)->get(); 

Вы знаете о PHP ремесленника повозиться? Вы можете выводить данные через вашу командную строку.

Попробуйте с ..

App\User::with('images')->limit(5)->get(); 

..и вы увидите 5 пользователей с изображениями, обеспечивая ваши отношения настроены правильно.

Edited

К сожалению, я не прочитал ваш вопрос правильно.

Чтобы ограничить возврат изображений для каждого пользователя, вы можете создать новый метод в своей пользовательской модели.

public function imageslimit(){ 

     return $this->belongsToMany(Images::class)->limit(5); 

    } 

Передайте всех пользователей вашему виду с вашего контроллера.

$users = User::all(); 

Затем звоните, когда вы просматриваете всех пользователей на своем экране.

@foreach($user->imageslimit as $image) 

    $image->name; 

@endforeach 

Я тестировал это, и он отлично работает для меня.

+0

Я не думаю, что вы поняли, что я имел в виду. Я пытаюсь получить изображения не пользователей. Код, который вы мне дали, - это получить Пользовательский лимит 5, а не изображения пользователя, и ограничить изображение на 4. BTW. Да, я знаю, что php artisan tinker. – usrNotFound

+0

Отредактировано, надеюсь, это то, что вы ищете. Он отлично работает для меня. – Phoenix1331

+0

Включает в себя только 5 изображений. OP хочет 5 изображений для каждого пользователя. –