Php Laravel未从mongodb获取结果
我有一个名为“University.json”的json文件,它只包含一行记录Php Laravel未从mongodb获取结果,php,json,laravel,mongodb,laravel-5,Php,Json,Laravel,Mongodb,Laravel 5,我有一个名为“University.json”的json文件,它只包含一行记录 {"University": [{"fees": "$200"}, {"month": "June"}]} 现在我已经使用mongo导入将上面的*.json文件插入MongoDb mongoimport --db university --collection finance --file University.json 我的Mongo数据库/集合值为:大学/金融 为了显示来自MongoDb的ViewBlade
{"University": [{"fees": "$200"}, {"month": "June"}]}
现在我已经使用mongo导入将上面的*.json文件插入MongoDb
mongoimport --db university --collection finance --file University.json
我的Mongo数据库/集合值为:大学/金融
为了显示来自MongoDb的ViewBlade上的值,我尝试了如下操作,但无法显示返回结果。此外,我的json文件中有一个顶级元素,即“University”。那么,这是获取嵌套元素的正确方法吗。请建议
路由(web.php)
控制器(FeesController.php)
模型(Finance.php)
database.php
app.php
注意:我使用mysql和mongodb来满足我的需求。尝试没有顶层元素的简单json结构时没有问题
编辑(1):
我已将控制器功能更改为:
public function getFees()
{
$fees = Finance::where(['University.month' => 'June'])->get();
return view('tables')->with('fees', json_decode($fees, true));
}
只需打印下面的视图,blade就会显示mongo的整个Json结构
{!! json_encode($fees) !!}
输出:
[{"_id":"5e04a06ca445f78401a16d0a","University":[{"fees":"$200"},{"month":"June"}]}]
但是现在如何分离元素呢?
我想在blade视图中显示Fees=$200和Month=June
我已经尝试过了,但没有工作,并且考虑到了未定义的索引异常费用
@foreach($fees['member'] as $member)
Fees: {{ $member['University']['fees'] }}
Month: {{ $member['University']['fees'] }}
@endforeach
另一个问题显示了最终的解决方案。如果有人面临类似情况,可能会有所帮助
您是否配置了
.env
和数据库.php
文件,并在app.php
中设置了jensegers\Mongodb\MongodbServiceProvider::class
作为提供者?@mare96请查看我的编辑(1)部分执行{!!$fees!!}
时得到的内容,我想您不需要json\u编码。请提供。@mare96如果我使用{!!$fees!!},我将得到数组到字符串的转换异常。另外,如果我用你写的答案替换,我会得到“未定义索引:成员”。在我最初的编辑(1)中,我添加了'member',但在实际的json中没有'member'元素。所以,single if()…endif()也抛出未定义的索引:University.Yeah。尝试在控制器中执行以下操作:$fees=Finance::where(['University.month'=>'June'])->get()->toArray()
您是否配置了.env
和数据库.php
文件,并在app.php
中设置了jensegers\Mongodb\MongodbServiceProvider::class
作为提供者?@mare96请查看我的编辑(1)部分执行{!!$fees!!}
时得到了什么,我想您不需要json\u编码。请提供。@mare96如果我使用{!!$fees!!},我将得到数组到字符串的转换异常。另外,如果我用你写的答案替换,我会得到“未定义索引:成员”。在我最初的编辑(1)中,我添加了'member',但在实际的json中没有'member'元素。所以,single if()…endif()也抛出未定义的索引:University.Yeah。尝试在控制器中执行以下操作:$fees=Finance::where(['University.month'=>'June'])->get()->toArray()代码>
MONGODB_CONNECTION=mongodb
MONGODB_HOST=127.0.0.1
MONGODB_PORT=27017
MONGODB_DATABASE=university
MONGODB_USERNAME=
MONGODB_PASSWORD=
...
'default' => env('DB_CONNECTION', 'mysql'),
'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGODB_HOST', 'localhost'),
'port' => env('MONGODB_PORT', 27017),
'database' => env('MONGODB_DATABASE', 'university'),
'username' => env('MONGODB_USERNAME'),
'password' => env('MONGODB_PASSWORD'),
'options' => [
'database' => 'admin' // sets the authentication database required by mongo 3
]
],
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
...
...
/*
`Mongo DB
*/
Jenssegers\Mongodb\MongodbServiceProvider::class,
...
public function getFees()
{
$fees = Finance::where(['University.month' => 'June'])->get();
return view('tables')->with('fees', json_decode($fees, true));
}
{!! json_encode($fees) !!}
[{"_id":"5e04a06ca445f78401a16d0a","University":[{"fees":"$200"},{"month":"June"}]}]
@foreach($fees['member'] as $member)
Fees: {{ $member['University']['fees'] }}
Month: {{ $member['University']['fees'] }}
@endforeach