【发布时间】:2021-06-23 18:51:42
【问题描述】:
我在 User 模型和 Order 模型之间存在 一对多 关系:
User.php:
public function order()
{
return $this->hasMany(Order::class);
}
Order.php:
public function user()
{
return $this->belongsTo(User::class);
}
现在我需要从订单中访问用户实例:
$order = Order::where('id', $id)->update(['status' => 'verified', 'price' => $data['price']]);
$user = $order->user;
dd($user);
但是通过这种方式,我得到了这个错误:
Trying to get property 'user' of non-object
那么如何解决这个问题并正确访问用户实例呢?
这是orders表的迁移:
Schema::create('orders', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('material');
$table->string('color');
$table->string('dimensions');
$table->string('description')->nullable();
$table->tinyInteger('user_id')->unsigned()->nullable();
$table->timestamps();
});
【问题讨论】:
-
用户表中的id字段和订单表中的user_id字段必须具有相同的数据类型,如果您在用户表中使用了$table->id(),则使用$table->unsignedBigInteger(' user_id')->nullable() 顺序表迁移文件
标签: php laravel eloquent one-to-many laravel-8