无法在 Laravel 中的模型视图中显示数据
Can't display data in view from model in Laravel
在我的项目中,我有很多产品的订单和有很多订单的客户。我很困惑,因为我想获得某个客户的所有订单以及每个订单的产品。我在某处搞砸了一些东西,我不确定我是否正确设置了我的关系。这是我的产品 table:
这是我的客户table:
这是我的订单 table:
这是我的模型:
产品:
class Product extends Model
{
public function orders()
{
return $this->belongsToMany('App\Order');
}
}
订单:
class Order extends Model
{
public function products()
{
return $this->hasMany('App\Product', 'id');
}
public function customer()
{
return $this->belongsTo('App\Customer');
}
}
客户:
class Customer extends Model
{
public function orders()
{
return $this->hasMany('App\Order', 'id');
}
}
我在我的 CustomersController 中使用 App\Customer::all()
从我的数据库中获取所有客户,并在我的 customers.blade.php 中传递数据。
<h1>Customers:</h1>
@foreach($customers as $customer)
<h3>{{$customer->name}}</h3>
@foreach($customer->orders as $order)
<p>Order ID: {{$order->id}}</p>
@foreach($order->products as $product)
<p>Product title: {{$product->title}}</p>
@endforeach
@endforeach
<hr>
@endforeach
这是输出:
如果有人能解释为什么它不输出所有内容并给出一些建议,如果这是处理关系的方式,我将非常感激。
您的产品应该属于一个订单,而不是多对多关系。
class Product extends Model
{
public function orders()
{
return $this->belongsTo('App\Order');
}
}
我找到了一个解决方案,方法是为名为 products_orders 的产品和订单创建一个枢轴 table,其中包含 product_id 和 order_id 并建立多对多关系产品和订单之间。这是因为一个订单可能有多个产品,产品可能存在于多个订单中。
我的支点 table products_orders:
class Product extends Model
{
public function orders()
{
return $this->belongsToMany('App\Order');
}
}
class Order extends Model
{
public function products()
{
return $this->belongsToMany('App\Product', 'products_orders');
}
public function customer()
{
return $this->belongsTo('App\Customer');
}
}
我为 Customer 和 Order 建立了一对多关系(customer_id in orders table),现在一切正常。
class Customer extends Model
{
public function orders()
{
return $this->hasMany('App\Order');
}
}
在我的项目中,我有很多产品的订单和有很多订单的客户。我很困惑,因为我想获得某个客户的所有订单以及每个订单的产品。我在某处搞砸了一些东西,我不确定我是否正确设置了我的关系。这是我的产品 table:
这是我的客户table:
这是我的订单 table:
这是我的模型:
产品:
class Product extends Model
{
public function orders()
{
return $this->belongsToMany('App\Order');
}
}
订单:
class Order extends Model
{
public function products()
{
return $this->hasMany('App\Product', 'id');
}
public function customer()
{
return $this->belongsTo('App\Customer');
}
}
客户:
class Customer extends Model
{
public function orders()
{
return $this->hasMany('App\Order', 'id');
}
}
我在我的 CustomersController 中使用 App\Customer::all()
从我的数据库中获取所有客户,并在我的 customers.blade.php 中传递数据。
<h1>Customers:</h1>
@foreach($customers as $customer)
<h3>{{$customer->name}}</h3>
@foreach($customer->orders as $order)
<p>Order ID: {{$order->id}}</p>
@foreach($order->products as $product)
<p>Product title: {{$product->title}}</p>
@endforeach
@endforeach
<hr>
@endforeach
这是输出:
如果有人能解释为什么它不输出所有内容并给出一些建议,如果这是处理关系的方式,我将非常感激。
您的产品应该属于一个订单,而不是多对多关系。
class Product extends Model
{
public function orders()
{
return $this->belongsTo('App\Order');
}
}
我找到了一个解决方案,方法是为名为 products_orders 的产品和订单创建一个枢轴 table,其中包含 product_id 和 order_id 并建立多对多关系产品和订单之间。这是因为一个订单可能有多个产品,产品可能存在于多个订单中。 我的支点 table products_orders:
class Product extends Model
{
public function orders()
{
return $this->belongsToMany('App\Order');
}
}
class Order extends Model
{
public function products()
{
return $this->belongsToMany('App\Product', 'products_orders');
}
public function customer()
{
return $this->belongsTo('App\Customer');
}
}
我为 Customer 和 Order 建立了一对多关系(customer_id in orders table),现在一切正常。
class Customer extends Model
{
public function orders()
{
return $this->hasMany('App\Order');
}
}