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'); } }
回答1件
あなたの回答
tips
プレビュー