正文
php数据库关系模型 php与数据库的连接
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
php中在关系模式中,关系、记录、字段分别指什么?
关系模式:关系模式相当于一张二维表的框架,在这个框架下填入数据,称为关系模式的一个实例,或者叫关系(R)
R(A1,A2,A3..Ai):R是关系名,Ai是关系的属性名。一个关系名对应一张表,关系名对应表名,属性对应表中的列名。
关系模型的简化表示法: RU,F
thinkphp在关联模型中三表级联查询
以下是伪代码php数据库关系模型,php数据库关系模型你参考下:
//以省市县为例
......
public getPR(){
echo "省份列表";
}
public getCI(){
$pID = isset($_GET[pid])?$_GET[pid]:-1;
//数据库根据pid获取指定省下php数据库关系模型的市
$list = $rs-where('...')-select();
echo "城市列表";
}
public getCO(){
$pID = isset($_GET[cid])?$_GET[cid]:-1;
//数据库根据cid获取指定城市下的县区
$list = $rs-where('...')-select();
echo "县区列表";
}
在模板中直接getPR的结果填充省份selectphp数据库关系模型,当省份select选中后ajax的调用getCI获取城市列表并填充城市select,城市select选中后调用getCO获取县区列表并填充县区select
按照以上思路实现就好php数据库关系模型了,希望能帮到你。
thinkphp 关联模型和视图模型的区别?
先说下,关联模型。
如你所说,关联模型和jion类似。
实际上,thinkphp的关联模型,就是简化你的jion操作。所以,本质上,关联模型,就是处理表连接关系的。归根结底的,就是让你在用模型操作的时候,简化SQL查询的join操作。(是简化操作,而不是改变SQL语句。)
视图模型。
先举个例子。一个用户表,一个文章表。一个用户对应多篇文章。
然后,你现在会经常出现如下需求:取得某人的文章记录,但是呢,只要求显示,用户名,文章名,文章ID,文章日期(其他的,比如,什么用户邮箱啊,用户密码啊,文章类型啊,文章修改日期啊,文章标签啊,你都不需要)
这个时候,你就可以定义一个试图模型,然后在 $viewFields 里面,就可以把你经常使用需要调用的那个几个字段,按照thinkphp的规定,定义进去。
这样,经过定义之后,你每次操作的时候,就像是操作“单表”一样的,是不是就很方便了呢。
其实,这个视图的概念,是一般比较完善点的关系型数据库都支持的,比如mysql,MSSQL,ORACLE等等。可以参考下相关数据库的知识。
至于你的那个东西定义的可参考方式如下。
class ArticleViewModel extends ViewModel {
public $viewFields = array(
'Article'=array('name','title'....其他字段),
'Author'=array('title'='category_name', '_on'='article.auid=author.id'),
'Article_class'=array(字段定义如上,具体规则,下面有介绍, '_on'=上面已经给你写了一个,这里其实就是写,article,和article_class 的主外键,对应关系。即JOIN ....ON..语句,ON部分的多内容),
'article_type'=array('field_realename'='field_alias'。这里就相当于查询语句SELECT 字段 字段的别名。这样的对应关系。)
);
}
OK.受人之鱼不如授人之渔。上面没有给你详细答案,而是根据你的条件,给了你一个示例,希望你能研究透。
我现在有3张表,用THINKPHP的关联模型如何定义关联模型
many to many关联
1、在model层的user.php 加入如下代码
public function role(){
return $this-belongsToMany('role','p_role_user');
}
2、在model层的role.php加入如下代码
public function user(){
return $this-belongsToMany('user','p_role_user');
}
3、在逻辑层,创建logic文件夹,与model同层次,logic文件夹下创建user.php,代码如下
?php
namespace app\index\logic;
use think\Model;
use app\index\model\User as ModelUser;
class User extends Model
{ //获取当前用户的所有角色
public function getRoles($id) {
$use=ModelUser::get(['id'=$id]);
return $use-task;
}
}
4、在Controller的user.php中 添加如下方法
public function showuserroles (Request $request)
{ $uid= $request - param('id');
$logics=\think\Loader::model('User','logic' );
$rolelist=$logics-getRoles($uid);
$this-assign('rolelist',$rolelist);
return $this-view-fetch('User_role') ; // view 下的User_role.html显示结果
}
5、某个页面使用ajax调用user控制器 showuserroles 方法,User_role.html代码如下:
div本班级的作业/br
ui
{volist name="rolelist" id="task"}
li
p 角色:{$rolelist.id} ,{$rolelist.name}, {$rolelist.level} /p
/li
{/volist}
/ui
/div
关系有点绕,需要你仔细品读,我也是刚刚学会的。
ThinkPHP 什么时侯用 视图模型\关联模型
这个很简单php数据库关系模型,只是thinkphp取的一个名字而已。
视图模型,其实就是连接查询,如php数据库关系模型:left join right join 左连接、右连接 内连接
关联模型就是,比如
$article 这是php数据库关系模型我们查出来的几条文章记录,然后来个循环foreach来找每篇文章的作者信息
foreach($article AS $k=$v){
$article[$k]['author'] = M('author')-where(array('auid'=$v['auid']))-find();
}
我们就得到php数据库关系模型了既有文章,又有作者信息的数据,这就是关联模型
php数据库关系模型的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php与数据库的连接、php数据库关系模型的信息别忘了在本站进行查找喔。