laravel: function in model must return a relationship instance

你离开我真会死。 提交于 2019-12-23 06:44:13

问题


I try to build a path for a model on laravel

I created a function in my model:

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

with dd(App\Helper\GeneralController::getURL($this)) test I got the right answer. (output is a URL)

but in view with the call: $article->path I get this error:

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

What is wrong?


回答1:


You need to call it:

$article->path()

When you do $article->path, you're trying to use Eloquent relationship which you don't have.




回答2:


I faced that error when I forgot to write return before relation in the model!
check it out now!




回答3:


I know this has already been answered and accepted. However, if the OP did want to use a property accessor rather than a method use the "get{property name}Attribute" syntax of Laravel to create a custom attribute.

Here is what it would look like for this specific case:

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

using this approach "path" can now be called as an attribute and will not be resolved to a relationship using the syntax:

$article->path;



回答4:


You're calling a relationship.

$article->path

To call the method, use '()', like so,

$article->path()



回答5:


path() is method not object element you need to call as method

$article->path();


来源:https://stackoverflow.com/questions/47727381/laravel-function-in-model-must-return-a-relationship-instance

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!