Как запросить mongodb с помощью laravel, чтобы получить записи, которые соответствуют первой найденной записи и N-му числу - PullRequest
0 голосов
/ 21 сентября 2018

Я ищу запрос Laravel + Mongodb, чтобы найти замещающий список товаров.Например, в основном запрос для abc (product-new), затем он находит документ и снова ищет xyz (product-old), и это будет до последнего соответствующего документа.В соответствии с приведенной ниже коллекцией, результатом будет xyz, pqr, opq.

Структура коллекции продукта:

+-------------+-------------+
| product-new | product-old |
+-------------+-------------+
| abc         | xyz         |
| xyz         | pqr         |
| pqr         | opq         |
| dys         | mnp         |
| mnp         | rst         |
+-------------+-------------+

Я включил приведенный ниже код, но я уверен, что это не правильно,

$productid = 'abc'; //sample product id
for($i = 0; $i < $perPage; $i++){
  $product = Product::where("product-new", $productid)->get()->toArray();
  if($product){
     $result[] = $product[0];
     $productid = $product[0]['product-old']; //xyz
  }

Но вы хотите сделать это одним запросом.

Заранее спасибо!

1 Ответ

0 голосов
/ 22 сентября 2018

Ваш код выглядит нормально, как есть.Единственными проблемами являются

(1), что он вернет, самое большее, $perPage пунктов.Но я подозреваю, что это то, что вам нужно.

(2) Нет кода, который можно было бы вырвать из цикла, если $product имеет значение false.Например, вы можете иметь:

 if ($product){
     $result[] = $product[0];
     $productid = $product[0]['product-old']; //xyz
 } else {
     break;
 }
...