我正在尝试让用户查看其订单。我已经创建了关系,但是当我(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等。
答案 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
实例。在使用QueryBuilder
,closure
,first()
等get()
之前,您将无法看到行。将代码修改为以下内容:
paginate()
如果省略$products = $user->products;
// OR
$products = $user->products()->get();
,除非已加载,否则它将使用()
加载关系。
编辑:由于模型名称不匹配,您可能需要在关系中包括外键:
User.php
products()->get()
最好查看关系文档的内容; https://laravel.com/docs/5.8/eloquent-relationships。命名,查询等方面有很多不正确的做法。