我正在尝试在 PHP/Laravel 4 中创建一个应用程序,但遇到了问题。我有一种情况,我需要跟踪给定人的多个名称,其中一个是主要的。我的表定义如下:
Schema::create('names', function($table) {
$table->increments('id');
$table->string('name');
$table->integer('person');
$table->timestamps();
$table->softDeletes();
});
Schema::create('people', function($table) {
$table->increments('id');
$table->integer('primary_name');
$table->timestamps();
$table->softDeletes();
});
这个想法是一个给定的人可以有多个名字(由 names 表上的“person”字段定义),但只有一个主名称(由 people 表上的“primary_name”字段定义。
以下是模型:
class Name extends Eloquent {
protected $guarded = array();
public static $rules = array(
'name' => 'required',
//'person' => 'required'
);
public function personOwning()
{
return $this->belongsTo('Person','person');
}
public function primaryOf()
{
return $this->hasOne('Person','primary_name');
}
}
和
class Person extends Eloquent {
/* protected $guarded = array();
public static $rules = array(
//'primary_name' => 'required'
);
*/
public function primaryName()
{
return $this->belongsTo('Name','primary_name');
}
public function names()
{
return $this->hasMany('Name','person');
}
}
我正在尝试同时创建一个名字和一个人,并将它们关联起来。代码的第一部分是($submitted 是来自输入表单的名称):
$name = new Name;
$name->name=$submitted;
$name->save();
$person=new Person;
$person->primaryName()->associate($name);
$person->save();
执行此操作时,出现错误:“未定义属性:Person::$primary_name” 请注意,我尚未尝试创建第二个关系。
这段代码看起来与 Code Bright 书中的示例完全不同,所以我无法理解我做错了什么。
非常感谢帮助。