2016-08-16 76 views
0

project VERSION 5.2試圖獲得非物件的財產[laravel 5.2]

我是一個新的Laravel 5學習者。 PLZ解決...

埃羅 R:試圖讓非對象的屬性

Comment.php [model]

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Comment extends Model 
{ 
    // 
    public function articals() 
    { 
     return $this->belongsTo('App\Artical'); 
    } 

    protected $fillable = array('body','artical_id'); 


} 

Article.php [model]

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Artical extends Model 
{ 
    // 
    public function comments() 
    { 
     return $this->hasMany('App\Comment'); 
    } 

    protected $fillable = array('title','body'); 


} 

route.php [route]

use App\Artical; 
use App\Comment; 

Route::get('/', function() 
{ 

$c = Artical::find(18)->comments; 
    foreach($c as $comment) 
    { 
    print_r($comment->body.'<br />'); 
    } 
}); // working ok.....but 

    $a = Comment::find(18)->articals; 
    print_r($a->title); // error:Trying to get property of non-object 




} 

getting error:Trying to get property of non-object

plz幫助我...

article table structure

comment table structure

+0

沒有說哪行的錯誤是嗎? – Derek

+0

它是什麼文件告訴你,拋出錯誤? – Derek

+0

這意味着'$ a'不是一個對象,這意味着這些文章可能是空的。 'Article :: comments()'應該是'hasMany(Comment :: class)'和'Comment :: articles()'應該是'Comment :: article()'。修復這種關係很可能意味着評論文章被返回,這意味着$ a-> title'會起作用 –

回答

0

的問題是您Comment型號搜索articles()關係。

如果在belongsTo關係中未指定外鍵,則它會根據關係方法的名稱構建外鍵名稱。在這種情況下,由於您的關係方法爲articles(),因此它將查找字段articles_id

您或者需要將articles()關係重命名爲article()(這是合理的,因爲只有一篇文章),或者您需要在關係定義中指定關鍵字名稱。

class Comment extends Model 
{ 
    // change the relationship name 
    public function article() 
    { 
     return $this->belongsTo('App\Article'); 
    } 

    // or, specify the key name 
    public function articles() 
    { 
     return $this->belongsTo('App\Article', 'article_id'); 
    } 
} 

注意,這是比的關係的hasOne/hasMany側不同。它根據班級的名稱建立關鍵名稱,因此不需要更改Article模型上定義的關係。

+0

同樣的promlem花花公子 –

+0

@ShivBhargav您的其他評論顯示'$ a = Comment :: fint(18); print_r($ a);'給你空輸出。這意味着你沒有對'18'的id發表評論。這也是一個問題。 – patricus

+0

我有3條評論與編號18和2評論與編號17但在兩個編號相同的promlem .. –

0

更改以下行

$a = Comment::find(18)->articles; 

$a = Comment::find(18); 
+0

$ a = Comment :: fint(18);的print_r($ A); //輸出空沒有任何錯誤但是 $ a = Comment :: fint(18) - > articles; //獲取錯誤:試圖獲取非對象的屬性 –

+0

Comment :: find(18) - > articles是什麼輸出; ? –

相關問題