网站服务内容填网站建设可以,形象类网站,wordpress jianux,网站优化细节怎么做首先简单说明一下#xff0c;laravel框架中查询并打印sql语句的办法#xff0c;不管任何时候由于sql语句报错时#xff0c;都可以先打印一下#xff0c;分析一下是什么原因造成的错误①引入laravel框架DB类useIlluminate\Support\Facades\DB;②开启框架日志记录DB::connect…首先简单说明一下laravel框架中查询并打印sql语句的办法不管任何时候由于sql语句报错时都可以先打印一下分析一下是什么原因造成的错误①引入laravel框架DB类useIlluminate\Support\Facades\DB;②开启框架日志记录DB::connection()-enableQueryLog();③条件即要查询的sql语句User::all();④输出打印所有的日志(sql)dd(DB::getQueryLog())回归正题这里遇到的问题是查询语句中的时间戳的转换(laravel查询构建器)初试时间分组的显示,这里使用的原生查询方法(DB:raw())先使用from_unixtime( ),时间戳转换为日期格式然后使用格式化函数将日期改为需要显示的日期并进行分组.$summary Article::query()-select(DB::raw(DATE_FORMAT(from_unixtime(art_time),‘%Y-%m‘) as time))-groupBy(‘art_time‘)-orderBy(‘art_time‘,‘desc‘)-get();接下来需要将同一日期下的文章填到上面得到的日期下foreach ($summary as $v) {$childart DB::select(select DATE_FORMAT(from_unixtime(art_time),‘%Y‘) as sumtime,art_id,art_title from blog_article where sumtime .$v-time);$v-childart $childart;}这里开始报错这个错误很简单查询where条件不能取前面别名数据库没有这个字段自然会报错然后修改了语句foreach ($summary as $v) {$childart DB::select(select DATE_FORMAT(from_unixtime(art_time),‘%Y‘) as sumtime,art_id,art_title from blog_article where date_format(from_unixtime(art_time),‘%Y-%m‘) .$v-time);print_r(DB::getQueryLog());dd($childart);$v-childart $childart;}再次查询发现为空于是打印了sql语句如下没有报错查询为空可以想到是由于where条件不匹配的原因导致的然后发现date_format格式化后应该为一个字符串这里显示的数字自然不会查询出来。于是修改sql语句foreach ($summary as $v) {$childart DB::select(select DATE_FORMAT(from_unixtime(art_time),‘%Y‘) as sumtime,art_id,art_title from blog_article where date_format(from_unixtime(art_time),‘%Y-%m‘) ‘.$v-time.‘);dd($childart);$v-childart $childart;}到此此问题解决。后续在自己看完打印出来的sql语句后觉得根本没有问题多次修改sql语句后仍无查到信息由于对mysql查询的不了解以及之前不怎么使用date_format()认为where条件不能这样写(where date_format(from_unixtime(art_time),‘%Y-%m‘) .$v-time)即where条件中对字段进行修饰于是想存的时间戳太过麻烦便直接到数据库增加一个字段用来存放时间日期格式更新这个字段内容的时候使用了之前讲的通过表格sublime操作mysql的简便方法。做了20条语句到sql编辑器中运行sql语句运行成功。看了看这条语句又想了想之前的那条觉得即使在where条件中加date_format应该也是可以的。再次尝试直接在sql编辑器中尝试了以下两条语句运行成功了update blog_article set summary date_format(from_unixtime(art_time),‘%Y-%m‘) where art_id 8;select * from blog_article where date_format(from_unixtime(art_time),‘%Y-%m‘) ‘2018-08‘;突然发现这里的date_format等于的是一个字符串发现了原因到查询为空的语句中加上了引号终于解决了问题。