Вернуть только один ряд в foreach - PullRequest
0 голосов
/ 21 мая 2019

Я начинаю с Laravel и у меня возникают проблемы с получением результатов запроса на лезвие Laravel.

Из списка, полученного в результате запроса к MySQL 'mysql', я хочу проверить имя, которое оно имеет в другой таблице другой базы данных 'tienda'.

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

Контроллер

    $productos = [
        'id' => $id
    ];

    $products = DB::connection('mysql')
                ->SELECT("SELECT * FROM promociones_product WHERE id_promo = $id", $productos);

    foreach ($products as $product)
    {
        $products_name = collect(DB::connection('tienda')
                ->table('ps_product_lang')
                ->where('id_product', $product->id_product)
                ->get(['name', 'id_product']));
    }

    return view('promociones-products')->with('promo', $products_name);

лезвие

        @foreach($promo as $product)
                <tr>
                    <td>{{ $product->id_product }}</td>
                    <td>{{ $product->name }}</td>
                </tr>
        @endforeach

Мне нужно сделать запрос к базе данных «mysql», и с этими результатами свериться с ее именем в другой базе данных, и все значения будут напечатаны на экране.

1 Ответ

0 голосов
/ 21 мая 2019

Итак, есть пара проблем с предоставленным вами кодом.

Для начала, в вашем цикле вы создаете новую коллекцию с именем 'products_name' в каждом цикле, которая продолжает перезаписывать себя.

Существует множество способов решения этой проблемы, однако, как бы я это сделал, ниже:

$promo = []; // Initialise a new array called promo

foreach ($products as $product)
{
    // Append the collection to the new array
    $promo[] = collect(DB::connection('tienda')
            ->table('ps_product_lang')
            ->where('id_product', $product->id_product)
            ->get(['name', 'id_product']));
}

Теперь у вас есть массив со всеми продуктами в коллекциях.Теперь цикл для получения этих данных должен работать.

Затем вы можете вернуть данные в представление, используя несколько методов, мой предпочтительный метод действительно compact(), показанный ниже:

return view('promociones-products', compact('promo'));

Что compact() сделает, это захватит любые имена переменных, упомянутые в представлении, и передаст его в представление.Этот компакт будет передавать переменную $promo в представление.

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