具有两个外键的三个表之间的Laravel关系

时间:2019-06-13 14:49:02

标签: php mysql laravel eloquent

我需要显示checkout_pages表的信息,该表具有两个需要验证的外键。

  • 用户

    • id
  • 产品

    • id
    • user_id
  • 结帐页面

    • id
    • user_id
    • product_id

产品具有所有者(products.user_id),checkout_pages具有用户与产品之间的关系。我需要显示特定用户和特定产品(不一定是产品所有者)的有关checkout_pages的信息。

我编写了一些代码,但是它只验证checkout_pages.product_id,而不能使它验证checkout_pages.user_id。

模型产品

    public function checkout_pages(){
        return $this->hasMany('App\CheckoutPage');
    }

ProductController

 public function index()
    {
        $products = Product::all()->where('user_id', \Auth::user()->id);
        return view('products.index', compact('products'));
    }

修改

  • 用户可以有多个checkout_pages,但商品不同
  • 这是我现在拥有的代码,我知道它没有验证checkout_pages表,但是通过Laravel Doc查看时我找不到答案
  • 我需要从ProductController中的checkout_pages获取此信息。

1 个答案:

答案 0 :(得分:0)

ProductController

public function index()
    {
        $products = Product::where('user_id', \Auth::user()->id)->get();
        return view('products.index', compact('products'));
    }

从您的视图 blade.php 文件

@foreach($products as $product)

    @foreach($product->checkout_pages()->where('user_id', Auth::user()->id)->get() as $checkoutPage)
        {{ $checkoutPage }}
    @endforeach

@endforeach

因此$checkoutPage保留每个产品

$product的每个 checkout_pages