質問したいこと
laravelでリレーションを組んでいますがうまくいきません。
1ユーザが商品を複数登録できるような機能を作成しています。
その中で、現在ログインしているユーザが登録した商品を取得し、withで他にも紐づくテーブルを取得し、viewで表示したいとと考えてます。
ですが、そもそも商品自体が取得できておらずnullなのでデータが何も入ってこないです。
エラー文言等は特に出ておりません。
1日悩んだ結果解決できる気がしない為質問させていただきました。よろしくお願いいたします。
テーブル内容
Product
Schema::create('products', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name')->comment('商品名'); $table->integer('stock')->comment('在庫'); $table->unsignedBigInteger('product_user_id'); $table->unsignedBigInteger('product_status_id'); $table->timestamps(); });
User
Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); });
ProductStatus
Schema::create('product_statuses', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->timestamps(); });
リレーション箇所
Models/Product.php
public function users() { return $this->hasMany(User::class, 'product_user_id'); }
Models/User.php
public function product(){ return $this->belongsTo(Product::class, 'product_user_id'); }
ProductController.php
public function index() { //この時点でnull↓ $products = Auth::user()->product()->first(); //実際に書きたいコード↓ $products = Auth::user()->product()->where('product_user_id', $user->id)->with(['product_statuses'])->paginate(15); return view('user.product.index', compact('products')); }
回答1件
あなたの回答
tips
プレビュー