买方下达的订单未显示给卖方Laravel

时间:2019-06-14 09:07:40

标签: php laravel eloquent laravel-5.8

我正在尝试让买方下达的订单可以让各自的卖方看到,但没有显示任何内容。

我已经尝试了几个小时来解决这个问题,但是我仍然陷于困境。

这是我的模型 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订单日期客户名称客户城市客户电话

1 个答案:

答案 0 :(得分:0)

在订单模型上,您与用户有关系,这意味着您拥有买家信息。 但是您与卖方没有任何关系。

  

因此为卖方添加一个关系。

注意:我假设买卖双方均为User

您必须为买方添加一个关系,为卖方添加一个关系(也不要忘记将它们添加到数据库中。这意味着您需要在{{1上添加buyer_idseller_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;

}