我有两个需要关联的模型,一个Users
模型和一个Prices
模型。在我的Prices
模型中,有一个JSON object
持有一个ID
个用户,我想知道是否可以使用Prices
与我的ID
表相关Prices
模型中的哪个?
我知道您可以使用getAttribute
然后像这样返回用户,但是我想知道是否可以使用$this->hasOne()
方法?
例如
JSON
{user_id: 1, other_values:"in the object"}
价格模型
class Prices extends Model {
/* Prices has the column 'object' which has the JSON object above */
protected $casts = ['object' => 'array'];
public function user(){
return $this->hasOne("App\User", $this->object->user_id, "id"); /* ! Example ! */
}
}
答案 0 :(得分:3)
我创建了一个具有JSON关系的软件包:Here
由于外键在Prices
模型中,因此您应该使用BelongsTo
关系:
class Prices extends Model {
use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
protected $casts = ['object' => 'array'];
public function user() {
return $this->belongsTo(User::class, 'object->user_id');
}
}
class User extends Model {
use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
public function prices() {
return $this->hasMany(Prices::class, 'object->user_id');
}
}