Отдельная строка возврата запроса и цифра в Laravel

начинающий вопрос: У меня такой запрос:

 $arr1 = BillProduct::where('bill_id', '=', $bill->id)->get('quantity'); 
 $arr2 = BillProduct::where('bill_id', '=', $bill->id)->get('product_id');

и его возвращение следующим образом:

[[{"quantity":15}], [[{"product_id":2}]

как я могу получить просто цифру 15, 2 ?? и как попасть в foreach рядом друг с другом? нравиться
15,2
18,3
...
вернуть в 2 переменную, например:

return $arr1, $Arr2;
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
71
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Ты можешь сделать

if ($arr1->isNotEmpty()) {
    $quantity = $arr1->first()->quantity; 
    echo $quantity; // Output: 15
} 

При многократном использовании петли foreach. Бывший

$quantities = [];
foreach ($arr1 as $item) {
    $quantities[] = $item->quantity;
}
print_r($quantities);

Изменить 01

$arr1 = BillProduct::where('bill_id', '=', $bill->id)->pluck('quantity');
$arr2 = BillProduct::where('bill_id', '=', $bill->id)->pluck('product_id');

$result = [];

foreach ($arr1 as $index => $quantity) {
    $product_id = $arr2[$index];
    $result[] = [$quantity, $product_id];
}

print_r($result);

большое спасибо. Что делать, если у меня есть два значения, такие как arr1 и arr2 в foreach?

Mehdi Bakhtiari 14.04.2023 11:01

покажи мне код.

Abdulla Nilam 14.04.2023 11:51

@MehdiBakhtiari проверьте правку 01

Abdulla Nilam 14.04.2023 12:04

@MehdiBakhtiari Туалет. принять, если полезно

Abdulla Nilam 14.04.2023 12:13

только одно. можно ли получить результат в 2 значения? теперь это print_r($result) и оба числа там. может получить результат вида print_r $a, $b; ????

Mehdi Bakhtiari 14.04.2023 17:07

Объединить столбцы двух массивов

Начиная с PHP 5 можно объединить столбцы двух ассоциативных массивов с помощью функции array_replace_recursive().

  • Для этого результат этих двух запросов Eloquent — класс Collection — необходимо преобразовать в массив. --> Можно использовать toArray()
$arr1 = BillProduct::select('quantity')->where('bill_id', '=', $bill->id)->get()->toArray();
$arr2 = BillProduct::select('product_id')->where('bill_id', '=', $bill->id)->get()->toArray();

$result = array_replace_recursive($arr1, $arr2);
/*
Result:

[
  ["quantity" => 15, "product_id" => 2],
  ["quantity" => 18, "product_id" => 3],
  ...
]
*/

foreach ($result as $record) {
  $quantity = $record['quantity'];
  $product_id = $record['product_id'];
  // ...
}

Дополнительная информация: https://www.php.net/manual/en/function.array-replace-recursive.php

спасибо, но мне нужно вернуть только число в 2 переменных, например: print_r $a, $b;

Mehdi Bakhtiari 14.04.2023 17:27

Итак, если я правильно понимаю, результатом как $arr1, так и $arr2 всегда будет только 1 запись? В этом случае используйте функцию «first()» вместо «get()». Пример: $a1 = BillProduct::select('quantity')->where('bill_id', '=', $bill->id)->first()->quantity;

rozsazoltan 14.04.2023 17:31

нет, проблема в обоих

Mehdi Bakhtiari 14.04.2023 17:50

Вы можете создавать переменные из элементов массива. Я не вижу никаких препятствий для того, чтобы это не было подходящим решением. Однако я обновил свой ответ и показал, как можно извлечь два столбца массива в две отдельные переменные.

rozsazoltan 14.04.2023 18:13

хорошо и спасибо, но как я могу вернуть это? когда я помещаю 2 в одну строку, я получаю ошибку сервера, подобную этой => <br> Utility::total_quantity('minus',$quantity,$product_id);

Mehdi Bakhtiari 14.04.2023 18:24

В PHP строки должны объединяться с помощью .. Вот так: echo "<br>" . Utility::total_quantity('minus',$quantity,$product_id);

rozsazoltan 14.04.2023 18:27

Предполагая, что ваш product_id не появляется в результате несколько раз, вы можете использовать второй аргумент для pluck(), чтобы назначить другой столбец в качестве ключа:

$result = BillProduct::where('bill_id', $bill->id)->pluck('quantity', 'product_id'); 
foreach($result as $productId => $quantity) {
    // enjoy life
}

Теперь вы сохраняете один запрос :)

этот результат выглядит так: {"1":1,"2":1,"3":1,"4":1} и я хотел как [[1,1],[1,2],[1 ,3],[1,4]]

Mehdi Bakhtiari 14.04.2023 18:10

->map(), вероятно, это исправит; формат, который вы описываете, тривиален, но в приведенных выше решениях используются два запроса, что расточительно, когда вы можете обойтись одним :). Кроме того, меньше кода.

Flame 15.04.2023 13:01

Другие вопросы по теме