$users = User::with('posts')->get();
foreach($users as $user){
$users->posts; // posts已经被加载了,没有增加DB查询
has()
has()方法是基于关联关系去过滤模型的查询结果,所以它的作用和where条件非常相似。如果你只使用has('post'),这表示你只想得到这个模型,这个模型的至少存在一个post的关联关系。
user > hasMany > post
//User至少有一条post的关联关系
$users = User::has('post')->get();
你还可以使用”.“来构造嵌套has语句。
user > hasMany > post
$user = User::has('post.votes', '>', '3')->get();
whereHas()
whereHas()方法的原理基本和has()方法相同,但是他允许你自己添加对这个模型的过滤条件。
user > hasMany > post
$users = User::whereHas('posts', function($q){
$q->where('created_at', '>=', '2017-11-29');
})->get();
// 只返回用户的post记录在2017年11月29之后的数据
原文地址:http://www.cnblogs.com/x-x-j/p/7921164.html
with()with()方法是用作“渴求式加载”的,那主要意味着,laravel将会伴随着主要模型预加载出确切的的关联关系。这就对那些如果你想加在一个模型的所有关联关系非常有帮助。因为“渴求式加载”缓解了1+N的查询问题,仅需1+1次查询就能解决问题,对查询速度有了质的提升。例如:user > hasMany > post$users = User::with('po...
本文实例讲述了
Laravel框架
中缓存的使用
方法。分享给大家供大家参考,具体如下:
1.
Laravel为各种不同的缓存系统提供了一致的API,支持的缓存有File、Memcached和Redis等
2. 主要
方法
put()、add()、forever()、has()、get()、pull()、forget()
3. 配置文件路径 /config/cache.php
4. 添加路由
Route::get('/cache1', 'HomeController@cache1');
Route::get('/cache2', 'HomeController@cache2');
5. 添加缓存
php–laravel框架接收http请求时携带的参数,及定义路由是带的参数。
通过http的形式访问路由,通过http携带参数;
1,浏览器中输入:http://www.redshop.com/admins/adminlist?curr=2&limit=10
小编这里是用到了layui的分页技术,鼓捣了好几天才得到正确的结果。
2,路由的定义
这里给小伙伴提醒一下哈,小编这里就有一个误...
CREATE TABLE `user` (
`uid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varbinary(255) NOT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=114001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_c
Laravel 的关联查询的原理就是先分别查出模型自身的数据和关联模型的数据,再通过定义的主键ID和外键ID进行关联查询。
所以模型自身的数据在 select 时的必需字段必须要有定义关联是的主键ID(或自定义的关联字段),同样,关联模型的数据在select时的必需字段也要有定义关联时的外键ID(或自定义的关联字段).
所以,以下的写法,是查询不到user,avatar字段的
// 获取评论列表数据,同时返回用户信息和头像信息
$comments = ...
一、路由如何调用控制器
1-1 、Route的概念
简单的来说: 对任何一个 Web 应用来说,都需要通过 HTTP 协议处理用户请求并返回响应。就是所为的浏览器地址,通过浏览器的地址请求到对应的文件下,让浏览器来解析该文件下的代码,并且将返回响应渲染至Route指定的地址上。
1-2、路由入门
在 Laravel 应用中,定义路由有两个入口,一个是 routes/web.php,用于处理终端用户通过 Web 浏览器直接访问的请求,另一个是 routes/api.php,用
has()方法可以用来查询是否有关联关系的一个东西,一般其他的has方法 就是判断这个里面有没有值
$packageOrders = Company::has('packages')->get();dd($packageOrders);
而这句话的has方法意思就不一样了,他详细的逻辑是什么呢,怎么关联,怎么查询的。首先看一下dd($packageOrders)输出的东西是什么
...
Laravel ORM中with,wherehas使用和区别
with -预加载
当作为属性访问 Eloquent 关联时,关联数据是「懒加载」的。意味着在你第一次访问该属性时,才会加载关联数据。不过,是当你查询父模型时,Eloquent 可以「预加载」关联数据。预加载避免了 N + 1 查询问题。要说明 N + 1 查询问题,试想一个 Book 模型关联到 Author 模型:
namespace App;
use Illuminate\Database\Eloquent\Model