问题是:我无法访问用户对象中的items属性,它们以Eloquent关系连接(一个用户可以拥有多个项目),但我将foreignId列命名为customer_id,而不是user_id,因为引用的表默认为users。当我尝试访问刀片中的items属性时,显示屏上出现以下错误:
状态[42 S22]:未找到列:1054“where子句”中的未知数据行“items.user_id”
从items
中选择 *,其中items
. user_id
= 3且items
. user_id
不为空
因此,它显然会搜索默认的foreignId列,而不是我为该关系定义的foreignId列。
Item.php:
public function customer(){
return $this->belongsTo(User::class,'customer_id');
}
User.php:
public function items(){
return $this->hasMany(Item::class);
}
public function get_user($user_name){
return User::where("user_name",$user_name)->first();
}
Migration for items table:
public function up()
{
Schema::create('items', function (Blueprint $table) {
$table->id();
$table->foreignId('wine_id')->constrained();
$table->foreignId('customer_id')->constrained('users');
$table->integer('quantity');
$table->timestamps();
});
}
UserController.php
...
$user = $user_model->get_user($request->user_name);
$request->session()->put("user",$user);
...
Blade:
<?php
$items = session('user')->items;
$empty_cart = true;
foreach($items as $item){
if($wine->id==$item->customer_id){
$empty_cart = false;
return;
}
}
var_dump($empty_cart);
?>
1条答案
按热度按时间6l7fqoea1#
错误实际上存在于
hasMany
关系中,因为user_id
不存在于items
迁移中。您需要在这里定义外键(就像您在Item模型中所做的那样),因为它看起来最有可能是
customer_id
。此错误是从以下位置的刀片式服务器代码触发的:
session('user')->items;
--一旦访问了items
。