Laravel 5 Laravel 5.4在人际关系中挣扎
我需要帮助处理Laravel 5.4关系 我有4张桌子: 用户(文件:id、名称等) 配置文件(字段:id、用户id、名字、姓氏) 订单(字段:id、用户id等) 订单项(字段:id、订单id、产品id等) 用户可以有一个配置文件 配置文件可以有一个用户 一个用户可以有许多订单 订单只有一个用户 一个订单可以有许多项目 在我的模型中: 用户: 简介:Laravel 5 Laravel 5.4在人际关系中挣扎,laravel-5,relationship,Laravel 5,Relationship,我需要帮助处理Laravel 5.4关系 我有4张桌子: 用户(文件:id、名称等) 配置文件(字段:id、用户id、名字、姓氏) 订单(字段:id、用户id等) 订单项(字段:id、订单id、产品id等) 用户可以有一个配置文件 配置文件可以有一个用户 一个用户可以有许多订单 订单只有一个用户 一个订单可以有许多项目 在我的模型中: 用户: 简介: public function user() { return $this->belongsTo('App\User'); } 订
public function user()
{
return $this->belongsTo('App\User');
}
订单:
public function user()
{
return $this->hasOne('App\User');
}
public function order_items()
{
return $this->hasMany('App\OrderItem');
}
订单项:
public function order()
{
return $this->belongsTo('App\Order');
}
public function product()
{
return $this->hasOne('App\Product');
}
我有两个问题:
一,。
显示订单时,我希望显示profiles表中的first_name和last_name列
在我的控制器中,我执行了以下操作:
$user=user::find($order->user\u id)
我认为:
{{$user->profile->fullName()}
有没有一种方法可以直接在视图中获取名称,而不首先在控制器中获取用户
二,
在我的订单模式中:
查看订单时,我希望显示所有订单项目以及每个项目的产品名称(产品->名称)
我很困惑,不知道怎么做
在我的控制器中,我尝试:
一,
获取错误:尝试获取非对象的属性
二,。
$items=Order::find($Order->id)->Order\u items
foreach($items as $item) {
echo $item->product->name;
}
出现错误:
SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“products.order\u item\u id”(SQL:select*fromproducts
whereproducts
order\u item\u id
不为空限制1)
public function user(){
return $this->belongsTo(User::class);
}
鉴于此,您只需写下以下内容:
{{$order->user->profile->fullName()}
products
表必须有一个order\u item\u id
列。那么只有这句话就足够了:$items=Order::find($Order->id)->Order\u items
或者我建议使用下面的行而不是上面的行
$items=$order->order\u items
因为您已经有了$order
对象,所以不需要使用id
再次查询
public function user(){
return $this->belongsTo(User::class);
}
鉴于此,您只需写下以下内容:
{{$order->user->profile->fullName()}
products
表必须有一个order\u item\u id
列。那么只有这句话就足够了:$items=Order::find($Order->id)->Order\u items
或者我建议使用下面的行而不是上面的行
$items=$order->order\u items
因为您已经有了$order
对象,所以不需要使用id
再次查询
Profile::where('user_id', $order->user_id)->first();
Order::with('order_items.product')->find($order->id);
Profile::where('user_id', $order->user_id)->first();
Order::with('order_items.product')->find($order->id);
这应该适用于您谢谢,但对于订购产品,我收到以下错误:SQLSTATE[42S22]:未找到列:1054未知列“products.order\u item\u id”在“where子句”中(SQL:select*from
products
whereproducts
在(1,2)中订购\u item\u id),谢谢,但是对于带有产品的订单,我得到了这个错误:SQLSTATE[42S22]:未找到列:1054未知列“products.order\u item\u id”在“where子句”(SQL:select*fromproducts
whereproducts
(1,2))中谢谢,我不明白为什么我需要在products表中添加order\u item\u id。products表具有id,order_items表具有product_id,这是关系$order->order\u items不返回产品名称,如何获取产品名称?好的,设法使其正常工作:在我的产品模型中,我有一个orderItem,在我的orderItem中,我有一个属于产品的orderItem。现在$order->order\u items也给了我产品名称。谢谢谢谢谢谢,我不明白为什么我需要在products表中添加order\u item\u id。products表具有id,order_items表具有product_id,这是关系$order->order\u items不返回产品名称,如何获取产品名称?好的,设法使其正常工作:在我的产品模型中,我有一个orderItem,在我的orderItem中,我有一个属于产品的orderItem。现在$order->order\u items也给了我产品名称。非常感谢。