我正在使用Maatwebsite的库来阅读和创建excel文件.创作很容易,而且有点直观,但是当谈到阅读时,我根本无法理解.
我想出了如何循环遍历行,但让我感到困惑的是我的示例中的$ row实际上是字符串的类型,所以我不能做$ row-> something;
在我的控制器中,我想这样读:
Excel::load('storage\\exports\\'. $fName, function($reader) {
$reader->each(function($sheet) {
Log::warning("sheet happens");
// Loop through rows
$sheet->each(function($row) {
Log::warning($row);
});
});
});
Run Code Online (Sandbox Code Playgroud)
这给了我输出
[2016-01-28 06:42:05] local.WARNING: sheet happens
[2016-01-28 06:42:05] local.WARNING:
[2016-01-28 06:42:05] local.WARNING:
[2016-01-28 06:42:05] local.WARNING:
[2016-01-28 06:42:05] local.WARNING:
[2016-01-28 06:42:05] local.WARNING:
[2016-01-28 06:42:05] local.WARNING:
[2016-01-28 06:42:05] local.WARNING: sheet happens
[2016-01-28 06:42:05] local.WARNING: ocjena
[2016-01-28 06:42:05] local.WARNING: Kolokvijum 1 (%)
[2016-01-28 06:42:05] local.WARNING: Kolokvijum 2
[2016-01-28 06:42:05] local.WARNING: Kolokvijum 2 (%)
[2016-01-28 06:42:05] local.WARNING: …Run Code Online (Sandbox Code Playgroud) 我已经删除了Laravel 5文档,我已经看到它支持数据库中的json类型字段,但我注意到了非常奇怪的行为.
这是我的表:
Schema::create('subjects', function ($table) {
$table->increments('id');
$table->string('name', 100);
$table->integer('ects');
$table->json('studies'); // this is my json type field
$table->date('created_at');
$table->date('updated_at');
});
Run Code Online (Sandbox Code Playgroud)
然后我用以下方法播种数据库:
Subject::create(['name' => 'Programming 1',
'ects' => '0',
'studies' => '{"program":"Computer Science","year":"1"}']);
Run Code Online (Sandbox Code Playgroud)
服务器响应看起来像这样:
{
"id": 15,
"name": "Programming 1",
"brEcts": 0,
"studies": "{\"program\":\"Computer Science\",\"year\":\"1\"}",
"created_at": "2015-12-05 00:00:00",
"updated_at": "2015-12-05 00:00:00",
"pivot": {
"profesor_id": 20,
"subject_id": 15
}
}
Run Code Online (Sandbox Code Playgroud)
请注意\"在响应字段研究中,laravel为我生成的"pivot"字段正确构造,并且也是json类型字段.
当我查看phpMyAdmin时,研究领域的价值看起来很正常.(没有\")
我的响应服务器代码:
$subjects = Profesor::find($id)->subjets()->get();
return response()->json($subjects);
Run Code Online (Sandbox Code Playgroud)
我是否正确播种了数据库,或者问题是我在服务器上返回值?
我知道我可以在客户端解决这个问题,删除符号"\",但这是我的最后一个选项,因为它不够干净.
编辑:
我通过在我的Model类中添加一个数组转换来解决它:
protected $casts = [
'name' => 'string',
'ects' …Run Code Online (Sandbox Code Playgroud)