ThinkPHP豆腐法场法属于其中一个模型的相干操作方法。主要目的是识别要返回或操作的字段,这些字段可用于查询和写操作。

1。用于查询

字段方法在查询操作中使用最频繁。


元模型->字段(ID、标题、内容)->选择();




字段方法用于指定查询的结果集,以包含id、标题和内容的三个字段的值:


从表中选择ID、标题和内容




当然,除了select方法之外,所有查询方法,包括查找等,都可以使用字段方法,它只在选择的情况下进行说明。

上述示例也可以用作数组而不是:


元模型->现场(阵列('id',标题,'content'))->选择();




SQL和以上的最终执行是等价的。

数组的使用似乎太复杂了,但不要首先得出这个结论,然后您将了解数组使用的好处。

数组模式的定义可以定义某些字段的别名,例如:


元模型->现场(阵列('id',标题= > 'name','content'))->选择();




SQL的执行等价于:


从表中选择ID、标题作为名称、内容




如果你想直接使用它:


元模型->字段(ID、标题名称、内容)->选择();




可能有错误的结果。

对于一些更复杂的字段,数组的优势更明显,例如:


元模型->现场(阵列('id','concat(姓名、ID、= > 'truename ',右)(标题7)= > 'sub_title '))(->选择);




SQL的执行等价于:


选择ID,concat(名称、ID)作为计算机中的DOS命令左(标题7)作为sub_title从表




大家都清楚,当需要在字段中使用SQL函数时,数组方法可以很好地解决。

是场方法那么有效吗如果你这样想,那太低估了ThinkPHP的领域和方法,ThinkPHP的细节比你想的更周到的多。

看看下面的情况,如果有一个表字段非常多,但有两个要求,首先需要获取所有字段,也许这是很简单的,因为字段方法不调用字段方法或者直接使用空可以做,其实这是真的:


元模型>选择();
元模型>字段()-选择();
元模型>字段>(*);




上面的三个用法相当于SQL的执行:


从表中选择*




但这并不是我所说的全部字段,我希望明确地调用所有字段(对于系统来说,这个要求的高性能要求不是太多,至少是一个好习惯),那么OK还是很简单的,用法可以完成前期:


元模型>字段(true)- >选择();




字段(true)的使用将显式地获取数据表所有字段的列表,即使您的数据表有100个字段。

第二个要求是,我希望获得除内容字段以外的所有字段值(文本字段的值是非常内存)。我们可以使用字段方法的独占函数,如以下方法来实现函数。


元模型->现场('content',true)->选择();




排除更多字段也可以:


元模型->现场('user_id,内容,真的)->选择();
或
元模型->现场(阵列('user_id,'content'),真的)->选择();






2。用于书写

除了查询操作外,字段方法还有一个非常重要的安全功能——字段合法性的检测(注意:3.1版本开始支持),如果我们在表单提交过程中使用字段方法,它可以与创建方法一起使用,以完成表单提交的字段合法性检测:


元模型->字段(标题,邮件内容)->创建();




也就是说,表单中的合法字段只有标题、电子邮件和内容字段。不管用户用什么方法更改或添加浏览器的提交字段,它都将被直接屏蔽,因为我们不希望由用户提交来确定所有其他字段,您可以通过自动定义函数来编写额外的字段。