我正在尝试让买方下达的订单可以让各自的卖方看到,但没有显示任何内容。
我已经尝试了几个小时来解决这个问题,但是我仍然陷于困境。
这是我的模型 Order.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
//protected $table = 'orders';
protected $fillable = [
'user_id', 'shipping_email', 'shipping_name', 'shipping_city', 'shipping_phone', 'billing_subtotal', 'billing_total',
];
public function user()
{
return $this->belongsTo('App\User');
}
public function products()
{
return $this->belongsToMany('App\Products_model')->withPivot('quantity');
}
public function orders(){
return $this->hasMany('App\OrderProduct', 'order_id');
}
}
这是我的 OrderProduct.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class OrderProduct extends Model
{
protected $table = 'order_product';
protected $fillable = ['order_id', 'product_id', 'quantity'];
public function products()
{
return $this->belongsTo('App\Products_model');
}
}
这是我的 User.php
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'Seller'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function products()
{
return $this->hasMany(Products_model::class);
}
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function orders()
{
$this->hasManyThrough(Order::class, Products_model::class, 'user_id', 'product_id');
}
}
最后这是我在 ProductController
中的viewOrder函数//Orders View Function
public function viewOrders(User $user)
{
$products = Products_model::where('user_id', '=', $user->id)->get();
$orders = [];
foreach($products as $product){
array_merge($orders, $product->order);
}
//dd( $products);
return view('orders')->with(compact('orders'));
}
我需要列出其他产品的每个卖方(用户)在另一个买方(用户)购买时收到订单。到目前为止,它表明 “订单ID订单日期客户名称客户城市客户电话
答案 0 :(得分:0)
在订单模型上,您与用户有关系,这意味着您拥有买家信息。 但是您与卖方没有任何关系。
因此为卖方添加一个关系。
注意:我假设买卖双方均为User
您必须为买方添加一个关系,为卖方添加一个关系(也不要忘记将它们添加到数据库中。这意味着您需要在{{1上添加buyer_id
和seller_id
字段}}。
orders table
将这两个关系添加到用户模型。这样您就可以轻松致电给他们。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
//protected $table = 'orders';
protected $fillable = [
'buyer_id', 'seller_id', 'shipping_email', 'shipping_name', 'shipping_city', 'shipping_phone', 'billing_subtotal', 'billing_total',
];
public function products()
{
return $this->belongsToMany('App\Products_model')->withPivot('quantity');
}
public function orders(){
return $this->hasMany('App\OrderProduct', 'order_id');
}
public function buyer()
{
return $this->belongsTo(User::class, 'id', 'buyer_id');
}
public function seller()
{
return $this->belongsTo(User::class, 'id', 'seller_id');
}
}
//订单查看功能
public function buys() {
$this->hasMany(Order::class, 'buyer_id', 'id');
}
public function sells() {
$this->hasMany(Order::class, 'seller_id', 'id');
}
在视图中,您可以像这样循环播放
public function viewOrders(User $user) {
$products = Products_model::where('user_id', '=', $user->id)->get();
// all sells
$sells = $user->sells;
// all buys
$buys = $user->buys;
}