laravel文档中model部分少得可怜 只能一点一点找资料慢慢摸索前行;
laravel查询数据库方式很多也很灵活, 个人爱好还是喜欢使用model看着比较整洁
DB类已经很完善了功能强大 具体使用方式:
DB::table('tablename')->get();
DB::table('tablename')->where('name','');
DB::table('tablename')->还有很多方法就不一一列举了
Model(Eloquent)使用方式:
Model连接查询
一对一关联
public function phone()
{
return $this->hasOne('需要关联的Model', '外表的关联字段(外键)', '本表的字段(主键)');
}
一对多关联
public function comments()
{
return $this->hasMany('需要关联的Model', '外边中的关联字段(外键)', '本表中的关联字段(主键)');
}
这时出现一个问题BelongsTo也是,怎么使用和HasOne,HasMany有啥不一样
public function user()
{
return $this->belongsTo('需要关联的Model','自己的关联字段(外键)','外表的关联字段(主键)');
}
通过laravel给的例子可以看出是有逻辑问题的
建表是会有一个主外键的问题 比如会员账号表(User)和会员信息表(UserData)
UserData中存User的主键作为User的外键u_id
这是两个表关系变成
User包含了UserData
UserData属于User的分表
这样在UserModel中关联规范使用HasOne
反之UserData表使用BelongsTo
多对一是不是也是一样的思路
模型关联查询使用方式 各种查询
一、简单的查询
//连表查询操作
public function scopeGetUserData($Query){
return $Query
->with(['UserData'=>function($query){
$query->select('u_id', 'u_name', 'u_sex');
//一定注意关联的字段必须查询出来(外键)
}]);
}
一定注意 用来关联的字段一定要查询出来 否则结果为空
二、查询进阶过滤
return $Query
->with(['User'=>function($query){
$query->select('u_id', 'u_name');
}])->whereHas('User', function ($query) use ($uname){
if(!empty($uname)){
$query->where('u_name','like','%'.$uname.'%');
}
});
return $Query
->with(['User'=>function($query){
$query->select('u_id', 'u_name');
}])->whereHas('User', function ($query) use ($uname){
$query->when(!empty($uname),function($query) use ($uname){
$query->where('u_name','like','%'.$uname.'%');
});
});
三、再进阶
return $Query
->with(['User'=>function($query) use ( $aWhere) {
$tel = $aWhere['u_tel'];
$query->select('u_id','u_name','u_tel');
if($aWhere['res']['tel']){
$query->where('u_tel', $tel);
}
return $query;
}]);
总结:Model使用起来新东西比较多 但是确实比较整洁 优雅的写开发代码
详情使用Model
在命令行运行下列语句创建两个Model
php artisan generate:model user php artisan generate:model userdata
这个时候在app/models/下就出现了两个文件User.php和UserData.php
这是两个Model类,他们都继承了Laravel提供的核心类\Eloquent。详见Eloquent系列教程:深入理解Laravel Eloquent(一)--基本概念与用法
Laravel是一套简洁、优雅的PHP Web开发框架 (PHP Web Framework) 。在世界(不含中国)PHP框架的占有率超过40%。但是国内好像很少使用laravel
使用Yii和thinkPHP比较多,
感觉Yii实现功能比较简单,也是一个很不错的框架。
最近由于工作的原因开始研究Laravel,使用起来也很顺手虽然还没用到高阶只是在用皮毛