質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

受付中

Laravelでのデータベースからのデータ取得処理について

parapra
parapra

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0回答

0評価

0クリップ

9閲覧

投稿2019/12/09 12:18

編集2022/01/12 10:55

現在laravelの学習を行なっています。
そこで下記のようなテーブルを3つ用意しました。

User
|user_id|tantou_id|name|age|
|:--|:--:|--:|
|1|1|本田|21|
|2|1|山田|22|
|3|2|岡本|23|
|4|2|田中|24|
|5|3|山本|25|
|6|3|坂本|26|

Tantou

tantou_idtantou_name
1担当A
2担当B
3担当C

goods
|goods_id|user_id|goods_name|tyumon_day|cancel_day|toutyaku_day|
|:--|:--:|--:|
|1|1|商品A|2019-10-11||2019-10-19|
|2|1|商品B|2019-10-14|2019-10-19||
|3|2|商品C|2019-06-11||2019-06-13|
|4|2|商品D|2019-07-11||2019-07-14|
|5|3|商品E|2019-09-11|2019-09-15||
|6|3|商品F|2019-02-11|2019-02-11||
|7|4|商品G|2019-10-12||2019-10-20|
|8|4|商品H|2019-10-12||2019-10-22|
|9|5|商品I|2019-10-12||2019-10-30|
|10|5|商品J|2019-10-12||2019-10-24|
|11|6|商品K|2019-10-12||2019-10-18|
|12|6|商品L|2019-10-12||2019-10-27|

これら3つのテーブルを使って担当者ごとにユーザーの注文した商品の数の集計を出したいです。
また出す時に到着したもの、キャンセルされたものは別のものとしてカウントしたいです。
toutyaku_dayにデータがあればカウント、cancel_dayにデータがあればキャンセルしてとカウントする。

例として出すならば
担当者Aさんの担当しているユーザーはuser_idが1,2の2名になります。
この担当者Aさんの利用者が注文した商品は商品A,商品B,商品C、商品Dになります。
この時に集計結果として{tantou_name:担当者A,toutyaku_count:3,cancel_count:1}のような結果が欲しいです。

それぞれモデルはこのように設定しています。

laravel

class User extends Model { protected $table = 'User'; }

laravel

class Tantou extends Model { protected $table = 'Tantou'; }

laravel

class goods extends Model { protected $table = 'goods'; }

試したこととしては

laravel

$tantou = Tantou::select('tantou_id')->get(); $shouhin = User::whereIn('tantou_id',$tantou)- >leftjoin('Tantou','User.tantou_id','Tantou.tantou_id') ->leftjoin('goods','User.user_id','goods.user_id') ->select('tantou_name',DB::raw('COUNT(goods_id) as toutyaku_count')) ->groupby('tantou_name')->get();

上記のようなものを考えてはみたのですが到着とキャンセルのものをどうやって分けてカウントするのかがわかりません。

初心者で説明部分も至らない点もあるかと思いますがご教授いただけると幸いです。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。