Laravel相关的模型属性是否为空?

时间:2019-06-19 20:50:10

标签: php database laravel eloquent

我正在尝试让用户查看其订单。我已经创建了关系,但是当我(dd)函数的结果时,相关的模型属性为空。

我不知道怎么了。

这是我的买方功能

//买方订单

 public function myOrders()
 { 
 $user = User::find(auth()->user()->id); 
 $user = $user->products();
 dd($user);// related model attributes shows empty

 return view('myOrders')->with(compact('user'));

 }

这是我的用户

 public function products()
 {
  return $this->hasMany(Products_model::class);
 }

 public function orders()
 {
 return $this->hasMany(Order::class);
 }

public function allOrdersBuyerSeller() 
{ 
return $this->hasMany(OrderProduct::class); 
}

products_model

 public function orders() 
 {
return $this->belongsToMany('App\Order', 'order_product');
 }

 public function user() 
 {
return $this->belongsTo('App\User');
 }

用户迁移

  */
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
  }

产品迁移

  public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('pro_name');
        $table->integer('pro_price');
        $table->text('pro_info');
        $table->integer('stock');
        $table->integer('category_id');
        $table->string('image')->nullable();
        $table->timestamps();

        $table->bigInteger('seller_id')->unsigned()->index();
        $table->foreign('seller_id')->references('id')->on('users')->onDelete('cascade');
    });
   }

我想查看表格的属性,例如价格,名称,信息,img等。

1 个答案:

答案 0 :(得分:1)

除非有关于代码的注释,否则看不到(CASE WHEN 'Column1' LIKE '%a%' AND 'Column1' NOT LIKE '%b%' AND 'Column1' NOT LIKE '%c%' THEN 'NewValue' END) 查询的结果是因为您没有向查询传递闭包。

products

当前,$user = $user->products(); 是一个$user实例。在使用QueryBuilderclosurefirst()get()之前,您将无法看到行。将代码修改为以下内容:

paginate()

如果省略$products = $user->products; // OR $products = $user->products()->get(); ,除非已加载,否则它将使用()加载关系。

编辑:由于模型名称不匹配,您可能需要在关系中包括外键:

User.php

products()->get()

最好查看关系文档的内容; https://laravel.com/docs/5.8/eloquent-relationships。命名,查询等方面有很多不正确的做法。