我无法在以下示例中找到问题,我一直在查看http://laravel.com/docs/eloquent#inserting-相关的模型,但由于某种原因,我无法找到,它不起作用。
型号:
class Article extends Eloquent {
public function category()
{
$this->belongsTo('Category');
}
}
class Category extends Eloquent {
public function articles()
{
$this->hasMany('Article');
}
}
DB架构:
Articles有一个名为category_id的列,它是一个整数,Articles和Categories在id列上都有增量。
当前失败的单元测试:
public function testCreateArticleWithCategory()
{
$category = new Category();
$category->name = 'Kitties';
$this->assertTrue($category->save());
$cid = $category->id;
$category = Category::find($cid);
$article = new Article();
$article->title = 'Hello Kitty';
$article = $category->articles()->save($article);
$this->assertEquals('Kitties', $article->category->name);
}
测试失败,并显示以下消息:
正在启动测试"ArticleTest::testCreateArticleWithCategory"。PHP致命错误:对中的非对象调用成员函数save()/Users/kristiannissen/Documents/php/sarcebleu/app/tests/ArticleTest.php在线30
第30行是
$article = $category->articles()->save($article);
根据您的问题,我假设$this->assertTrue($category->save());
通过了测试?
你能给我们看看你的模式吗?
另外,在你的模型中,你不应该做return $this->belongsTo('Category');
和return $this->hasMany('Article');
吗?
你的模型不应该如下吗:
class Article extends Eloquent {
public function category()
{
return $this->belongsTo('Category');
}
}
class Category extends Eloquent {
public function articles()
{
return $this->hasMany('Article');
}
}
尝试
$article = $category->articles->save($article);
而不是
$article = $category->articles()->save($article);
有点神奇。