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

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

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

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

348閲覧

DBからの取得の仕方について

kinisinai

総合スコア28

Laravel

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/11/19 10:43

編集2019/11/19 12:03

下記のようなDBのテーブルが3つあったとします。

laravelで現在は下記のようは取得方法をしています。

laravel

1$hoge = name::where('keyid', 1)->where('keyid',2) 2->leftjoin('address', 'addresstable.id', 'nametable.id') 3->leftjoin('item', 'itemtable.id', 'nametable.id')->get(); 4

これだと取得結果としてはitemの部分がそれぞれのidが一致した最後のものしか取得できません。(idが1ならばapple4が取得)
そうではなく1つのJson配列でidが一致したitemを全て取得して1つのレコードとして取得したいのですがどうすればよいのかわかる苦戦しています。
ご教授いただければ幸いです。

テーブル名:name↓
|id|keyid|name|
|:--|:--:|
|1|1|hoge|
|2|2|hoge2|

テーブル名:address↓
|id|keyid|address|tel
|:--|:--:|
|1|1|hoge1-2-3|080-0000-0000
|2|2|hoge2-2-3|080-1111-1111

テーブル名:item↓
|id|keyid|item|
|:--|:--:|
|1|1|apple|
|2|1|apple2|
|3|1|apple3|
|4|1|apple4|
|5|2|orange|
|6|2|orange2|
|7|2|orange3|

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/19 11:08

join する前提であるならテーブル設計がおかしすぎます
kinisinai

2019/11/19 11:22

申し訳ございません。 こちら練習用と思って作成したものでかつ僕自身テーブル設計をしたことがないので多めに見ていただけると助かります。
退会済みユーザー

退会済みユーザー

2019/11/19 11:27 編集

さすがに、(どんな人でも回答は)無理だと思うよ…。 なぜなら、あり得ない設計ですから…。 Laravel のルールガン無視ですし。
kinisinai

2019/11/19 11:30

すみません。 もしよろしければどのようにありえないのか教えていただくことは可能でしょうか?
退会済みユーザー

退会済みユーザー

2019/11/19 11:33

1, テーブル名に 〜table なんて名前 2, テーブル同士の結合キーが互いに id 3, idなのに重複している。 4, 例示するにも具体性のない名称(回答者を無駄に労力をかけさせるだけ) 5, laravel の質問なのにModelの定義を提示していない。
kinisinai

2019/11/19 11:43

テーブル名に〜tableはダメなのですか?何故でしょうか? idなのに重複しているとはどういう意味でしょうか?
退会済みユーザー

退会済みユーザー

2019/11/19 11:47 編集

> テーブル名に〜tableはダメなのですか?何故でしょうか? laravel の migration 、model について学習してください。 そもそも、tableなんてなくてもtableであることは自明。可読性が悪い。 > idなのに重複しているとはどういう意味でしょうか? 例示のitemtableのidです。重複値があるということは、そもそもIDの役割ではない。 IDという名前が適当ではない。
kinisinai

2019/11/19 12:03

ご指摘ありがとうございます。僕なりに解釈して修正の方を行いました。
退会済みユーザー

退会済みユーザー

2019/11/19 12:08

不明なので確認です。 name とは User(ユーザー)dふのことですよね? address って分ける必要ある?ないと思うんだけど。 name: address って 1レコードにつき1レコードですよね? item の keyid って具体的には何を意味する値と考えているの? 誰々の持っている商品(アイテム)という意味なら、user_id とすべきでは?
kinisinai

2019/11/19 12:26

nameはユーザーのことです。 今のところはaddressは1レコードにつき1つです!今後1レコードにつき2.3と増やそうかなとは少し考えていました。 すみません。特に何も考えておらず共通のものとしてとしか考えておりません。
m.ts10806

2019/11/19 14:32 編集

1回Laravel度外視してPurePHPでミニマムコードで確認した方がいいのでは。 Laravelに手を出せるレベルには到底ないと思います(その手の質問者非常に多い。Laravelは他のフレームワークより求められるプログラミング・設計の技術が高いですよ)
kinisinai

2019/11/20 12:45

練習でlaravelを触るのでもダメでしょうか?
m.ts10806

2019/11/20 20:53

PHPの練習にはほとんどなりませんよ。 同じようなものをLaravel度外視でオブジェクト指向を用いてPurePHPで作れるかどうか考えてみてください。 PurePHPでも難しいなと思えばやはりLaravelに手を出すのは時期尚早です。余計に混乱するだけですよ。 (そういう質問者、結構いますよ。ほとんど成長できてません)
退会済みユーザー

退会済みユーザー

2019/11/21 04:34 編集

@kinishinai > 練習でlaravelを触るのでもダメでしょうか? だめとは言わないですが、かえって遠回りになると思いますよ。 また、わからないところも出てくると思いますが、 質問するにも用語は正しく知っていないと伝わらないし、 共通言語として相互が共通認識を持っていないとコミュニケーションは成立しません。 私もなんとか、あなたの疑問を解決するお手伝いができればと思って補足を依頼しましたが、 正直あなたの回答は大きくずれているし、明らかに基礎的な部分の知識が足りていません。 現段階では、Laravel はいったん置いておいて、入門的な書籍か何かを通して、PHPの基礎、データベースの基礎を学んでから、Laravel に移行するのが最短ではないかと思います。
kinisinai

2019/11/21 12:14

御回答ありがとうございます。 こちらの質問は一度運営さんの方に削除依頼を出しておきます。 今回はお力を貸していただきありがとうございました。
m.ts10806

2019/11/23 19:47

急かしているわけですが、削除依頼は出されないんですか?それとも削除依頼を出したが拒否されたとか。 質問内容が悪いとかではなく、あくまで質問者自身の基礎不足によるものと思うので、削除依頼を受け入れられる内容ではないと思っています。 https://teratail.com/help/delete-policy だからといって「締めます」だけで自己解決するとそれはそれで非難の的となります。 既に指摘されている内容を一度吟味し、なるべく解決する方向に持っていってみてください。 時間はかかっても良いと思います。きちんと理解した上で解決できるなら。
kinisinai

2019/11/25 10:22

申請の方はすでに出しているのですが返信がまだない状態です。 他の方からご指摘があるのようにまずはPHPの基礎からもう一度やり直そうと思っています。
m.ts10806

2019/11/25 10:41

質問から直接削除依頼だされたのでしたら一度非表示になります。 で、今そうなっていないということは削除依頼は否決されたと解釈できます。 私も既に書きましたように時間がかかってもきちんと解決すべきと思います。
kinisinai

2019/11/25 10:55

一度メールボックスの方を見直します。 もちろん放置するつもりはございません。ただ今回の件こちらの質問で皆様からご指摘いただいたようにまだ基礎が足りていないためまずは基礎の勉強をもう一度やり直しているところです。
m.ts10806

2019/11/25 11:58

削除依頼の否決はあまり返信はないと思いますよ。私も回答やコメントなど削除依頼を出したことがありますが受け入れられたときだけ返信がありました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問