Php 外键关系在拉雷维尔不起作用
我制作了两张表格清单和清单图片。Inventory表的主键是Inventory_images表的外键,现在我正在尝试获取同一个Inventory的所有图像,但得到错误。 这是我的密码 库存模型:Php 外键关系在拉雷维尔不起作用,php,laravel-5,laravel-4,laravel-5.3,Php,Laravel 5,Laravel 4,Laravel 5.3,我制作了两张表格清单和清单图片。Inventory表的主键是Inventory_images表的外键,现在我正在尝试获取同一个Inventory的所有图像,但得到错误。 这是我的密码 库存模型: /** * The table name that should be hidden from other modules */ protected $table = 'inventories'; protected $PrimaryKey = 'id'; public function te
/**
* The table name that should be hidden from other modules
*/
protected $table = 'inventories';
protected $PrimaryKey = 'id';
public function test(){
return $this->belongsTo('App\InventoryImage', 'i_id');
}
库存图像模型:
protected $table = 'inventory_images';
protected $PrimaryKey = 'id';
public function inv_det(){
return $this->belongsTo('App\Inventory', 'id');
}
控制器:
$inventory = Inventory::with('test')->orderBy('id', 'DESC')->paginate('10');
dd($inventory);
有人能帮我找出问题吗您的代码中有一些错误,您应该先解决这些错误(这可能有助于您解决问题) 首先,覆盖主键的变量名应该是
$primaryKey
,而不是$primaryKey
(变量名通常以小写字母开头)。
不过,这不会有任何影响,因为Laravel假定主键字段的名称为id
更重要的是,在这两种情况下,您都在使用belongsTo
方法,尽管在一种情况下它应该是hasMany
。在1-n关系中,父模型应该返回hasMany
关系,而子模型(用外键保存列)应该返回belongsTo
此外,hasMany或belongsTo方法的第二个参数是外键列名,以防它与模型的snake-case表示不同(由\u-id
附加)。因此,如果您的inventory\u images
表中的外键列的名称不同于inventory\u id
,则需要使用正确的名称传递第二个参数。我假设您的外键名为I\u id
,因此需要将其传递给这两个函数
请检查这是否有效:
/**
* The table name that should be hidden from other modules
*/
protected $table = 'inventories';
protected $primaryKey = 'id';
public function test(){
return $this->hasMany('App\InventoryImage', 'i_id');
}
和子表:
protected $table = 'inventory_images';
protected $primaryKey = 'id';
public function inv_det(){
return $this->belongsTo('App\Inventory', 'i_id');
}
错误是什么?调用模型[App\Inventory]上的未定义关系[test]。这是一个错误我尝试了您的解决方案,但现在在尝试获取非对象的属性时遇到另一个错误