我尝试在laravel Eloquent中使用__call魔术方法制作动态方法。 我有博客和blog_translations表,并且必须从blog_translations表加载TITLE,CONTENT。
控制器中的public function translations($lang = null) { if(empty($lang)) { if (!empty(Lang::getLocale())) { $language = Lang::getLocale(); } else { $language = Config::get('app.fallback_locale'); } }else{ $language = $lang; } return $this->hasMany(Blog_Translation::class)->where('locale', $language); } public function __call($method,$arg) { $filed = str_replace('get','',$method); if(sizeof($arg) >= 1){ $lang = $arg[0]; }else { $lang = ''; } return $this->translations($lang)->where('name',$filed)->first()->text; }
:
$blog = Blog::find(1); return $blog->getTITLE();
错误:
未定义的属性: 照亮\数据库\雄辩\关系\的hasMany :: $ ID
删除__call函数关系工作正常。