Laravel разбивка на страницы с указанием c внешнего ключа - PullRequest
0 голосов
/ 16 июня 2020

Мне нужно сделать нумерацию страниц в Laravel, и пока я читаю документацию laravel, вот несколько способов сделать это. но в моих случаях это немного сложно. Итак, скажем, у меня есть две таблицы в моей БД, table1 и table2 (отношения многие ко многим), я хочу разбить table1 на страницы с определенными c идентификаторами. Итак, я имею в виду, что если table1 содержит идентификаторы 1,2,3,4,5 ... n, я хочу разбивать на страницы только строки с идентификаторами 2 и 3

Я пробовал:

private function check_wear($type){
        $products_id = array(); //here is ids which $type is set as 'ON'
        $wears = DB::select("SELECT prod_id FROM wears WHERE ".$type." = 'on' "); //Select specific products ids. (in our case it is **table1**)
        foreach ($wears as $wr){
            array_push($products_id,$wr->prod_id);
        }
        return $products_id; //return array with ids which should be paginate
    }
    public function hat($locale){

        $hat_prod_ids = $this->check_wear('coat');

        $p=12;
        $products = DB::table('products')->paginate($p); // 12 per page


        dd($products);

мой код разбивает на страницы только одну таблицу со всеми данными, есть ли какая-либо встроенная функция, чтобы как-то написать условие c logi? для пагинации

1 Ответ

0 голосов
/ 16 июня 2020

Если вам нужно отфильтровать свою разбивку на страницы с элементами, которые у вас есть в $hat_prod_ids, для этого вы можете использовать метод WhereIn(), он проверяет, существует ли ваш элемент (в нашем случае id) в вашем $hat_prod_ids и возвращает TRUE или False

$products= DB::table('products')
            ->whereIn('id',$hat_prod_ids)
            ->paginate($p);

добавьте этот код, и теперь вы сможете разбивать на страницы только те идентификаторы, которые совпадают в вашем массиве

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...