web-dev-qa-db-ja.com

laravel:モデルの関数は関係インスタンスを返さなければなりません

Laravelでモデルのパスを作成しようとしています

モデルに関数を作成しました:

public function path()
{
    return App\Helper\GeneralController::getURL($this);
}

dd(App\Helper\GeneralController::getURL($this))テストで、私は正しい答えを得ました。 (出力はURLです)

しかし、呼び出しでビュー:$article->path私はこのエラーを受け取ります:

App\Article:: path must return a relationship instance.

なにが問題ですか?

29
Ali

呼び出す必要があります:

$article->path()

$article->pathを実行すると、あなたが持っていない雄弁な関係を使用しようとしています。

57
Alexey Mezenin

モデルの関係の前にreturnと書くのを忘れたときに、このエラーに直面しました!
今すぐチェック!

7
Ali

あなたは関係を呼んでいます。

$article->path

メソッドを呼び出すには、次のように「()」を使用します。

$article->path()
4
jynk

path()は、メソッドとして呼び出す必要があるオブジェクト要素ではないメソッドです

$article->path();
3
Niklesh Raut

これはすでに回答され、受け入れられています。ただし、OPがメソッドではなくプロパティアクセサーを使用する場合は、Laravelの「get {property name} Attribute」構文を使用してカスタム属性を作成します。

この特定の場合の外観は次のとおりです。

public function getPathAttribute()
{
    return App\Helper\GeneralController::getURL($this);
}

このアプローチを使用すると、「パス」を属性として呼び出すことができ、構文を使用した関係に解決されません。

$article->path;
3
pwyg