这是我的架构:
Schema::create('agents', function (Blueprint $table) {
$table->increments('id');
$table->increments('name');
$table->integer('agent_type_id')->nullable();
$table->foreign('agent_type_id')->references('id')->on('agent_types');
$table->timestamps();
});
Schema::create('agent_types', function (Blueprint $table) {
$table->increments('id');
$table->increments('title');
$table->timestamps();
});
这是我的Agent
模型:
class Agent extends Model
{
public function agentType()
{
return $this->belongsTo('AgentType');
}
}
一个特定的AgentType
记录的标题为Artist
。因此,我想创建一个扩展Artist
的{{1}}模型,并将其Agent
预设指向该特定记录。我将有一些不同类型的代理,所以我正在考虑将其作为其他代理类型的模式来实现。
所以有几个问题:
agentType()
类中的agentType()
方法设置为指向该类所有实例的特定记录?答案 0 :(得分:0)
我最终使用Eloquent的Accessor方法为后代类定义一个特定值:
class Artist extends Agent
{
public function getAgentTypeAttribute()
{
AgentType::where('title', 'Artist')->first();
}
}
超简单的解决方案!