Laraver DB Query - PullRequest
       4

Laraver DB Query

0 голосов
/ 18 февраля 2020

Я новичок в Laravel, и я не знаю, что здесь происходит. Я сделал простой запрос соединения с двумя таблицами, но я получил тройной результат. Я пытался с distinct(), orderBy() (получая ошибку) ... Может кто-нибудь сказать мне, что здесь происходит

Laravel Запрос:

    public function getArtForCom($id) {
    $articles = Article::select('kup_art.rbr as id', 'kup_art.sifra as article_id', 'kup_art.naziv as article_name', 'kup_art.grupa as group_id', 'kup_art.grupa_naziv as group_name', 'ro_stanje.koli as count',  'ro_stanje.v_cije as price')
        ->join('ro_stanje', 'kup_art.sifra', 'ro_stanje.sifra')
        ->where('kupac', $id)
        ->get();
    return response()->json($articles);
}

и результат:

[
  {
    "id": 1,
    "article_id": "000140",
    "article_name": "KECAP BF",
    "group_id": "04",
    "group_name": "KECEPI  ",
    "count": "130.000",
    "price": "3.590"
  },
  {
    "id": 2,
    "article_id": "000407",
    "article_name": "SWISS ROLS",
    "group_id": "13",
    "group_name": "INDUSTRIJSKI ROLAT",
    "count": "485.000",
    "price": ".790"
  },
  {
    "id": 1,
    "article_id": "000140",
    "article_name": "KECAP BF",
    "group_id": "04",
    "group_name": "KECEPI",
    "count": "266.000",
    "price": "3.050"
  },
  {
    "id": 2,
    "article_id": "000407",
    "article_name": "SWISS ROLS",
    "group_id": "13",
    "group_name": "INDUSTRIJSKI ROLAT",
    "count": "7204.000",
    "price": ".490"
  },
  {
    "id": 1,
    "article_id": "000140",
    "article_name": "KECAP BF",
    "group_id": "04",
    "group_name": "KECEPI  ",
    "count": "3.000",
    "price": "3.215"
  },
  {
    "id": 2,
    "article_id": "000407",
    "article_name": "SWISS ROLS",
    "group_id": "13",
    "group_name": "INDUSTRIJSKI ROLAT",
    "count": "17.000",
    "price": ".490"
  },
  {
    "id": 1,
    "article_id": "000140",
    "article_name": "KECAP BF",
    "group_id": "04",
    "group_name": "KECEPI  ",
    "count": ".000",
    "price": "3.215"
  },
  {
    "id": 2,
    "article_id": "000407",
    "article_name": "SWISS ROLS",
    "group_id": "13",
    "group_name": "INDUSTRIJSKI ROLAT",
    "count": "69.000",
    "price": ".490"
  },
  {
    "id": 1,
    "article_id": "000140",
    "article_name": "KECAP BF",
    "group_id": "04",
    "group_name": "KECEPI  ",
    "count": "2.000",
    "price": "3.215"
  },
  {
    "id": 2,
    "article_id": "000407",
    "article_name": "SWISS ROLS",
    "group_id": "13",
    "group_name": "INDUSTRIJSKI ROLAT",
    "count": "48.000",
    "price": ".490"
  },
  {
    "id": 2,
    "article_id": "000407",
    "article_name": "SWISS ROLS",
    "group_id": "13",
    "group_name": "INDUSTRIJSKI ROLAT",
    "count": "30.000",
    "price": ".488"
  }
]

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Здесь вам нужно сгруппировать общий ключ, kup_art.sifra

  public function getArtForCom($id) {
$articles = Article::select('kup_art.rbr as id', 'kup_art.sifra as article_id', 
   'kup_art.naziv as article_name', 'kup_art.grupa as group_id', 'kup_art.grupa_naziv as 
   group_name', 'ro_stanje.koli as count',  'ro_stanje.v_cije as price')
    ->join('ro_stanje', 'kup_art.sifra', 'ro_stanje.sifra')
    ->where('kupac', $id)
    ->groupBy('kup_art.sifra')
    ->get();
return response()->json($articles);
 }
0 голосов
/ 18 февраля 2020

Вы не получаете повторяющиеся результаты. Результаты возвращают те же продукты, но разнообразие цены и количества:

 {
     "id": 1,
     "article_id": "000140",
     "article_name": "KECAP BF",
     "group_id": "04",
     "group_name": "KECEPI  ",
     "count": "130.000",
     "price": "3.590"
  }

Количество и цена различны:

 {
    "id": 1,
    "article_id": "000140",
    "article_name": "KECAP BF",
    "group_id": "04",
    "group_name": "KECEPI",
    "count": "266.000",
    "price": "3.050"
  },

Вы можете добавить groupBy('kup_art.sifra'), но результаты выиграли ' Точнее, поэтому лучше проверить в БД, почему существует несколько данных о цене и запасе для одного SKU.

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