我的应用中有 2 个模型,用户"和'MedicineType'(每个用户属于一个 MedicineType).
I have 2 models in my app, 'User' & 'MedicineType' (each User belongs to one MedicineType).
我使用belongsTo() 和hasMany() 在两个模型之间建立了一对多关系.hasMany() 关系完美运行,但belongTo() 不起作用.有谁知道我哪里出错了?
I made the one-to-many relation between two model using belongsTo() and hasMany(). hasMany() relation works perfectly but belongTo() doesn't work. Does anyone know where did I make a mistake?
User::find(1)->medicine_type [这不返回任何内容]
User::find(1)->medicine_type [this returns nothing]
MedicineType::find(1)->users [返回用户]
MedicineType::find(1)->users [this returns users]
这是模型的代码:
class MedicineType extends Eloquent {
public function users()
{
return $this->hasMany('User');
}
}
class User extends Eloquent {
public function medicine_type()
{
return $this->belongsTo('MedicineType');
}
}
这是我的数据库结构:
users:
id
name
medicine_type_id
medicine_types:
id
name
你的关系不工作的原因不是因为模型中指定的关系,而是因为 User 模型中的方法命名而不是指定外部键.
The reason your relation is not working is not because of the relations specified in the model, but because of the method naming in the User model and not specifying the foreign key.
代替:
public function medicine_type()
{
return $this->belongsTo('MedicineType');
}
使用:
public function medicineType()
{
return $this->belongsTo('MedicineType', 'id');
}
我希望这对你有用;)
一切都在一起:
<?php // app/models/MedicineType.php
class MedicineType extends Eloquent {
// Determines which database table to use
protected $table = 'medicine_types';
public function users()
{
return $this->hasMany('User');
}
}
和:
<?php // app/models/User.php
class User extends Eloquent {
// Determines which database table to use
protected $table = 'users';
public function medicineType()
{
return $this->belongsTo('MedicineType', 'id');
}
}
测试它是否有效:
$user = User::find(1);
return $user->medicineType->name;
这成功返回了相关的medicine_type 的名称.
This successfully returns the related medicine_type's name.
我希望这能帮助你进一步;)
I hope this helps you further ;)
这篇关于Laravel 属于不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!