1.belongsTo()、hasOne()的区别
在定义一对一关联模模型方法时,对其有疑惑不知道该定义哪个:
belongsTo是定义在关联模型从模型中,也是从模型对应的表一般都储存外键id,在关联模型属于从属关系
hasOne 是定义在主模型中,在关联模型中属于主关系,没有储存外键id
他们的所传入的参数都一样
第一个参数:关联模型的名称
第二个参数:外键字段名
第三个参数:主键名
//User
<?php
namespace app\api\model;
use think\Model;
class User extends Model{
public function profile(){
return $this->hasOne('Profile','user_id','id');
}
}
//Profile
<?
namespace app\api\model;
use think\Model;
class Profile extends Model{
public function user(){
return $this->belongsTo('User','user_id','id');
}
}
2、hasMany(),belongsTo()区别
这两个方法用于一对多的关联模型
hasMany和上面的hasOne一样,定义于主模型中,没有外键id的表的对应模型中
扫描二维码关注公众号,回复:
4749195 查看本文章
belongsTo与上面一样,定义在从模型中,储存外键id的表的对应模型中
3、belongsMany的用法
用于一对多的关联模型的主、从两个模型中。
belongsToMany传入参数:
第一个 参数:关联模型名
第二个参数:中间表名(含表前缀)
第三个参数:外键名
第四个参数:当前模型关联键名
4、关联查询调用
UserModel::with('book,profile')->select();其中的book,profile均为userModel的关联方法名,均与User有直接关系
user->book
user->profile
UserModel::with(['book','book.comment.']);其中book为userModel的关联方法名,comment是book的关联方法名,
user->book->comment
5、常用模型操作
<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\User;
use app\index\model\UserLevel;
class index2 extends Controller
{
public function index(){
$a = User::get(1);
print_r($a);
/*$b = UserLevel::get(1);
print_r($b);*/
// 插入操作
$user = new User;
$user->email = '[email protected]';
$user->mobile = '13888000000';
// $user->aa = '12345';
$user->save();
// 插入操作
$userArr['email']='[email protected]';
$userArr['mobile']='13888000000';
if($result =$user->create($userArr)){
echo "用户id:{$result->id}邮件:{$result->email}手机{$result->mobile}";
}
// 批量新增
$user = new User;
$list = [
['email'=>'[email protected]','mobile'=>'12345'],
['email'=>'[email protected]','mobile'=>'23456']
];
if($user->saveAll($list)){
echo '用户批量新量成功';
}
// 查询数据
$user = User::get(1); // 返回一个对象
echo $user->email;
echo '<br/>';
echo $user->mobile;
// 因为实现了 \ArrayAccess接口,可以将对象象数组一样访问
$user = User::get(2);
echo $user['email'];
echo $user['mobile'];
// 根据某个条件查询数据 getByXxx()方法
$user = User::getByMobile('12345');
$user = User::get(['mobile'=>'12345','email'=>'[email protected]']);
$user = User::where(['mobile'=>'12345','email'=>'[email protected]'])->find();
echo $user['mobile'];
// 如果要查询多个数据,可以使用模型的all方法
$list = UserLevel::all();
$list = UserLevel::all(['level_id'=>4]);
$list = UserLevel::where('level_id','<=',3)->select();
foreach($list as $v){
echo 'id:'.$v->level_id;
echo '==等级名称:'.$v->level_name;
echo '<br/>';
}
// 对于数据库查询出来的数据更新数据
$user = User::get(1);
$user->mobile = '98876';
$user->email = '[email protected]';
if(false!==$user->save()){
return '更新用户成功';
}else{
return $user->getError();
}
// 自己定义是数据更新操作
$userArr['mobile']='12345';
$userArr['email']='[email protected]';
User::update($userArr,['user_id'=>1]);
// 删除操作
$user = User::get(2);
$user->delete();
// 或者使用
User::destroy(3);
}
}