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

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

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

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

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1549閲覧

laravel 注文履歴

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

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

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/06/19 13:52

編集2020/06/25 13:38

laravelで注文履歴を作ろうとしています

やろうとしていること
Userのマイページで注文したお店(shop)、商品(commodity)とその数を見れるようにする。

試したができなかったこと
user_idとshop_idとcreated_atで複数注文したものをまとめて取ってくるのかなと思っています。
同じお店の注文でも注文した日時が違ったら、表示を別にしたいです。

返信遅くなってしまいすみません。
migrate関連DB関連載せておきました。
image(写真)は載せないことにしたので無視してください。
よろしくお願いします。

下記のコードはマイページの注文一覧をしようとしたコードです
アドバイスをもとにいろいろやってよくわからない形になり、いきず待ってしまったのでアドバイスいただけると幸いです。
現状お店に対して、ほかの注文した商品も入っているところです。
UserController

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Shop; use App\User; use App\Image; use App\Post; use App\Reservation; use App\Commodity; use App\Favorite; class UserController extends Controller { public function show($id) { $reservations = DB::table('reservations')->where('user_id', $id)->latest()->get(); $res_shops = array(); foreach ($reservations->groupBy('shop_id.created_at') as $re) { $shop_id = $re->pluck('shop_id'); foreach ($shop_id as $sh_id) { $shop = Shop::where('id', $sh_id)->get(); } array_push($res_shops, $shop); } $commodities = array(); $commodity_id = $re->pluck('commodity_id'); foreach ($commodity_id as $com_id) { $commodity = Commodity::where('id', $com_id)->get(); array_push($commodities,$commodity); } return view("user.show", 'commodities' => $commodities, 'reservations' => $reservations, 'res_shops' => $res_shops, 'fav_shops' => $fav_shops]); } }

User.php

<?php namespace App; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; public function shops() { return $this->hasMany('App\Shop', 'favorites', 'user_id', 'shop_id')->withTimestamps(); } public function reservation() { return $this->belongsTo('App\Reservation'); } }

Shop.php

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Shop extends Model { protected $fillable = [ 'sname', 'region', 'sprice', 'detail', 'store_in', 'take_out', 'delivery', ]; public function commodities() { return $this->hasMany('App\Commodity'); } public function images() { return $this->hasMany('App\Image'); } public function users() { return $this->belongsToMany('App\User', 'favorites', 'shop_id', 'user_id'); } public function reservation() { return $this->belongsTo('App\Reservation'); } }

Commodity.php

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Commodity extends Model { protected $fillable = [ 'name', 'price', 'description', ]; public function images() { return $this->hasMany('App\Image'); } public function reservations() { return $this->hasMany('App\Reservation'); } public function user() { return $this->belongsTo('App\User'); } public function shop() { return $this->belongsTo('App\Shop'); } }

Reservation.php

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Reservation extends Model { protected $fillable = [ 'remark', ]; public function images() { return $this->hasMany('App\Image'); } public function shops() { return $this->hasMany('App\Shop'); } public function user() { return $this->belongsTo('App\User'); } public function commodity() { return $this->belongdTo('App\Commodity'); } }

DB Reservationテーブル

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

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

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

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

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

m.ts10806

2020/06/19 20:42

設計(特にDB)はどうなってるんでしょうか。そこが正規化されてなければ幾らコードでなんとかしようと思っても無理無駄の多い力業になるだけです。 つまり、コードだけ提示されてもそれだけで的確なアドバイスにはなり得ません
phper.k

2020/06/20 01:41

関連する migration ファイルを全て提示してください。
退会済みユーザー

退会済みユーザー

2020/06/20 09:37

いろいろ変更しました。 わかりず楽てすみません。
guest

回答1

0

ベストアンサー

注文履歴をGroupByでどうでしょうか

投稿2020/06/20 06:54

mikkame

総合スコア5036

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

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

退会済みユーザー

退会済みユーザー

2020/06/20 10:10

試してみます。 また何かお伺いするかもしれませんが、その時はよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問