×

thinkphp模型

thinkphp模型(thinkphp5模型关联查询)

admin admin 发表于2023-03-26 03:15:07 浏览54 评论0

抢沙发发表评论

本文目录一览:

thinkphp 关联模型和视图模型的区别?

先说下,关联模型。

如你所说,关联模型和jion类似。

实际上,thinkphp的关联模型,就是简化你的jion操作。所以,本质上,关联模型,就是处理表连接关系的。归根结底的,就是让你在用模型操作的时候,简化SQL查询的join操作。(是简化操作,而不是改变SQL语句。)-thinkphp模型

视图模型。

先举个例子。一个用户表,一个文章表。一个用户对应多篇文章。

然后,你现在会经常出现如下需求:取得某人的文章记录,但是呢,只要求显示,用户名,文章名,文章ID,文章日期(其他的,比如,什么用户邮箱啊,用户密码啊,文章类型啊,文章修改日期啊,文章标签啊,你都不需要)-thinkphp模型

这个时候,你就可以定义一个试图模型,然后在 $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部分的多内容),-thinkphp模型

    '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

关系有点绕,需要你仔细品读,我也是刚刚学会的。

thinkphp5中的model模型层,有什么用

Thinkphp模型类的主要作用是:完成业务逻辑处理,包括对数据表的增删改查(CUED

)操作。对处理的数据进行封装;对字段及属性进行验证;完成对象及属性的过滤等功能。

Thinkphp模型类的命名规则:使用驼峰法命名,并且首字母大写,然后加上模型层的名称

thinkPHP模型关联查询

price 里用的是belongsTo,只能自动获取一个产品

$price = PriceList::get(1);

//假设产品名称字段是title

echo $price-productlist-title;

product里面是关联了多个价格的

$products =  ProductList::where('status',1)-limit(10)-select();

foreach($products as $product){

    var_export($product-pricelist);

}

这里输出的价格应该是一个列表。

参考: 模型关联 ThinkPHP5.1