我有以下表格结构:
Table Name - Users
Column: id, name, email, etc
Table Name - Plugins
Column: id, theme_id, type_id, code,
Table Name - Templates
Column: id, theme_id, user_id, templatedata
Table Name - Userplugins
Column: id, user_id, plugins_id, contents
现在我调用ID为templates
的路由,其中templatedata
有JSON
个数据,我能够获得Plugins
code
将我的刀片文件中的代码作为:
@foreach($gettemplate as $renderer)
{!! $plugins->find($renderer)->code !!}
@endforeach
但我无法获取UserPlugins
表中的内容。以下是我controller
,我试图这样做:
public function get_template($id)
{
$template = Template::findOrFail($id);
$gettemplate = json_decode($template->templatedata);
$plugins = Plugins::all();
$user = User::findorFail($id);
return $user->userplugins()->contents;
//return view('nitseditor.test', ['plugins' => $plugins, 'gettemplate' => $gettemplate, 'user' => $user]);
}
我已经评论了我的观点,只是为了检查输出。
我已定义relationship
我的model
文件中的App/User.php
包含:
public function userplugins(){
return $this->hasMany('App\UserPlugin');
}
在App\UserPlugin.php
档案中我已经
protected $fillable = [
'contents',
];
我收到以下错误:
未定义属性:Illuminate \ Database \ Eloquent \ Relations \ HasMany :: $ contents
请帮帮我,谢谢。
答案 0 :(得分:1)
在以下行中:
return $user->userplugins()->contents;
当您致电$user->userplugins()
表示您调用关系方法时。它不会为您返回Eloquent Collection或Eloquent Object。
您需要致电
$user->userplugins
获取UserPlugin的集合
然而,当你打电话
return $user->userplugins->contents;
你会收到错误,因为return $user->userplugins
是一个Eloquent Collection,你无法从中获取内容。
您可以获取特定UserPlugin的内容。例如,用户的第一个UserPlugin如:
return $user->userplugins()->first()->contents;