laravel访问数据库次数

关系访问的时候,会有这样的读取方式:
$phone = User::find(1)->phone;

这里使用了一次find,然后再调用hasone,是不是就调用了两次数据库了,因为两个操作都是collection的。

那么这种方法和
$user = User::find(1);
$phone = Phone::where('user_id', $user->id);

这样是一样的咯?

还有。请教一下如何测得一个方法一共访问了mysql几次,如何提高访问数据库的效率?同时又如何获得访问数据库时sql语句呢?谢谢!
已邀请:

xlimit

赞同来自: FiveSay

1.如果你问的是N+1的问题,看文档Eloquent ORM章节的“预载入”小节。

2.DB::getQueryLog();看查询日志,还有Illuminate\Database\Query\Builder类里有个toSql()方法(Model对象也可以用toSql()方法)。这两个方法都可以看sql。

zhuzhichao

赞同来自: FiveSay

SQL语句的话,你可以这样来查看,有两个插件推荐:
1. https://github.com/barryvdh/laravel-debugbar laravel-debugbar
2. https://github.com/itsgoingd/clockwork clockwork
我用的是第二种,因为第一种是在页面后面加JS代码的,第二种是借助chrome插件异步获取程序信息JSON的。

要回复问题请先登录注册