2016-08-03 30 views
0

私はlaravelのプロジェクトチラシに取り組んでいます。未定義のメソッドを呼び出すphotos()laravelプロジェクトフライヤー

$flyer->photos()->create(['photo' => 'foo.jpg']); 

メッセージとBadMethodCallException ' \データベース\クエリー\ Builderを照らす未定義のメソッドの呼び出し::写真()' ここで

は私のFlyer.phpファイルです:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Flyer extends Model 
{ 
    public function photos() 
    { 
     return $this->hasMany('App\Photo'); 
    } 
} 

ここに私のPhoto.phpファイルです:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Photo extends Model 
{ 
    protected $table = 'flyer_photos'; 

    protected $fillable = ['photo']; 

    public function flyer() 
    { 
     return $this->belongsTo('App\Flyer'); 
    } 
} 

)(メソッドの写真のように見えるエラーの説明から認識か何か

+0

だから、 '$ flyer'とは何ですか? – Machavity

+0

'$ flyer'を作成する行を親切に投稿してください。 –

+0

$ flyer = factory( 'App \ Flyer') - > create(); – user3089096

答えて

0

ません、$flyerはそれがIlluminate \Database\Query\Builderオブジェクトだ、Flyerオブジェクトではありません。それはあなたのエラーです。 $flyerを作成する場合は、クエリを作成した後にget()またはfirst()を必ず使用してください。

+0

これは私がオブジェクトを作成するために使用するものです\t $ flyer = factory( 'App \ Flyer') - > create();それはうまく動作しますが、その後は$ flyer-> photo() - > create(['photo' => 'foo.jpg'])を実行します。それでエラーが発生します – user3089096

+0

おそらく 'App \ Flyer'用に定義された' factory'が必要です。作成された '$ flyer 'が本当に' Flyer'オブジェクトであることを確認してください。 –

+1

はいそれはチラシオブジェクトであり、工場はlaravelコマンドです – user3089096

関連する問題