Laravel получает данные о 2, где пункты в то же время - PullRequest
0 голосов
/ 29 мая 2018

Мне нужна помощь, чтобы узнать мою ошибку в приведенном ниже коде:

public function finderfunction(Request $request) {

    // get array of categories that signed to finder (1,2,3)
    $finder = Finder::with('categories')->get();
    $catid = [];
    foreach($finder as $findd){
      foreach($findd->categories as $finddcat){
        $catid[] = $finddcat->id;
      }
    }
    //get products with those categories (1,2,3) (first where)
    $results = Product::where('category_id', $catid)
    //get products with those categories and same sku's (second where)
    ->where('sku', $request->input('brand_id'))
      ->groupBy('products.sku')
      ->get();
     return view('front.finder', compact('results'));
  }

Как вы видите, я прокомментировал в своем коде выше, вот что я пытаюсь достичь:

  1. Моей модели Finder присвоены идентификаторы категорий, такие как 1,2,3
  2. Затем я пытаюсь включить все товары из этих категорий 1,2,3
  3. Затем я фильтрую их еще раз, чтобы получить товары того же типа sku между ними

screen1

Issue

В процессе тестирования я обнаружил, что если я заменю статический идентификатор категории на$catid in $results = Product::where('category_id', $catid) Я могу получить свои результаты, но пока я использую тот же код, что и выше, ни один результат не вернется назад, I get my custom message for those time that no result can be found.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Во-первых, ваша переменная $ catid является массивом.Вы не можете передать массив в качестве параметра в eloquent где.Вы можете передать массив как

$users = DB::table('users')
           ->whereIn('id', [1, 2, 3])
           ->get();

Во-вторых, проверьте, успешно ли ваш $ catid получил значение или нет.

В-третьих, чтобы записать несколько условий, в которых вы можете передать его в виде массива, например -

$users = DB::table('users')->where([
    ['status', '=', '1'],
    ['subscribed', '<>', '1'],
])->get();

https://laravel.com/docs/5.6/queries

, см. Эту ссылку для получения дополнительной помощи.

0 голосов
/ 29 мая 2018

Попробуйте выполнить свой код, используя , где , как этот код Product::whereIn('category_id', $catid).Надеюсь, вы получите желаемый результат.

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