2013-12-10 37 views
1

我在以下示例中找不到問題,我一直在尋找http://laravel.com/docs/eloquent#inserting-related-models,但由於某些原因我無法找到,它不工作。Laravel 4 save hasMany return調用成員函數save()在非對象上

型號:

class Article extends Eloquent { 
    public function category() 
    { 
    $this->belongsTo('Category'); 
    } 
} 

class Category extends Eloquent { 

    public function articles() 
    { 
    $this->hasMany('Article'); 
    } 
} 

DB模式:

文章有一個名爲CATEGORY_ID列是一個整數,而且文章和類別對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); 
    } 

測試與以下消息失敗:

Starting test 'ArticleTest::testCreateArticleWithCategory'. PHP Fatal error: Call to a member function save() on a non-object in /Users/kristiannissen/Documents/php/sacrebleu/app/tests/ArticleTest.php on line 30

和線路30

$article = $category->articles()->save($article); 

回答

0

通過你的問題,我我是否假設$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'); 
    } 
} 
+0

Doh!我完全錯過了,我一直在這個主演太久了,謝謝你的回覆Gravy –

+0

@kristiannissen - NP - 輕鬆完成! – Gravy

0

嘗試的

$article = $category->articles->save($article); 

代替

$article = $category->articles()->save($article); 

有一點神奇的事情。

相關問題