[英]array to string conversion in laravel
我试图从laravel 5.0中的表中获取一些数据
public function index()
{
$data = DB::table('modules')->get();
return view("BaseView.home")->with('data',$data);
}
这是我的看法
@foreach($data as $modules)
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ $modules->module_name }}<i class="plusMinus fa fa-plus-square plusMinusSpacing" aria-hidden="true"></i>
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
{!! $moduleCategories = DB::table('module_categories')->where('modules_id','=',$modules->id)->get() !!}
@foreach($moduleCategories as $category)
<a class="dropdown-item" href="#">{{ $category->categories_name }}</a>
@endforeach
</div>
</li>
@endforeach
$ module-> id从另一个查询结果中获取。 现在,当我尝试运行它时,我得到Array to string conversion
。 有人可以指出错误。 在某种意义上,预期输出> 1,可以有多个类别名称匹配该条件。
问题是你试图将php逻辑放在echo {{ ... }}
。 您正在尝试回显一个集合或数组,因此您将获得错误, Array to string conversion
。 正确的方法是在控制器中执行逻辑。 但要快速解决,请更换:
{!! $moduleCategories = DB::table('module_categories')->where('modules_id','=',$modules->id)->get() !!}
至
<php $moduleCategories = DB::table('module_categories')->where('modules_id','=',$modules->id)->get(); ?>
永远不要使用{{ ... }}
或{!! ... !!}
{!! ... !!}
放置逻辑,那些是回显出一个字符串。
== ==编辑
我建议使用laravels雄辩的关系方法,这将简化代码,并从视图中分离逻辑。
注意:期望您是否使用laravel命名约定。
在Modules
模型上,添加一个与ModuleCategory
的关系,如下所示:
public function module_categories()
{
return $this->hasMany('App\ModuleCategory');
}
在您的控制器上,在索引方法上替换:
$data = DB::table('modules')->get();
同
$data = Modules::get();
最后在视图上,改变它:
@foreach($data as $modules)
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ $modules->module_name }}<i class="plusMinus fa fa-plus-square plusMinusSpacing" aria-hidden="true"></i>
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
@foreach($modules->module_categories as $category)
<a class="dropdown-item" href="#">{{ $category->categories_name }}</a>
@endforeach
</div>
</li>
@endforeach
正如我对卡洛斯的解决方案发表评论,以下是我如何解决同样的错误......
//Controller
$users = User::where('blah', 'blah')->get();
return view('index', [
'users' => $users,
]);
//View
<script type="text/javascript">
angular.module("app").factory("DataService", function() {
return {
users: {!! $users !!},
};
});
</script>
如上所述,这将导致Array to string conversion
错误,因为$users
是一个数组。
但是,如果$users
是“集合”,则不会发生此错误
即
//Controller
$users = User::all();
return view('index', [
'users' => $users,
]);
//This is ok
要么,
//Controller
$users = collect([]);
return view('index', [
'users' => $users,
]);
//This is fine too
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.