thinkphp 关联模型
模型定义:
[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]
namespace Home\Model;
use Think\Model\RelationModel;
class TestModel extends RelationModel{
// 默认表名
protected $tableName = 'a';
// 关联定义
protected $_link = array(
// 关联1
'Userrent' => array(
'mapping_type' => self::HAS_ONE,
'class_name' => 'B',
'mapping_name' => 'mapping_b',
'foreign_key' => 'bid',
),
// 关联2
'Class' =>array(
'mapping_type' => self::HAS_ONE,
'class_name' => 'c',
'mapping_name' => 'mapping_c',
'foreign_key' => 'cid',
),
// 关联3
'school' => array(
'mapping_type' => self::HAS_ONE,
'class_name' => 'd',
'foreign_key' => 'did'
),
);
}
[/pcsh]
使用实例:
[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$test = D('Test');
$i = time();
$data = array(
'id' => $i,
'name' => 'king',
'mapping_b' => array(
'class' => rand(1,10),
),
'mapping_c' =>array(
'grade' => 9,
),
'school' => array(
'school' => 'test school',
),
);
$result = $test->relation('school')->add($data);
$arr = $test->relation(true)->select();
var_dump($arr);
}
}
[/pcsh]
原文地址:
http://document.thinkphp.cn/manual_3_2.html#relation_model
注意事项:
1,关联定义中有三个比较重要 mapping_type(tp模型关联类型),class_name(关联表名),foreign_key(外键,即关联表中与当前表主键如id值相同的字段)
2,mapping_name 为 读写数据 时键名,当mapping_name在模型中定义时,会使用模型中定义关联时的键作为mapping_name,实践表明,当你定义了这个mapping_name时,读写数据一定要用mapping_name,关联定义中的键反而变得不那么重要了
3,调用时,relation方法中的参数应该为true或者mapping_name,true的话会根据数据中的键自动匹配,如果手动写出了mapping_name,那么不会操作多余的关联,数据数组中使用的key必须是mapping_name
最后更新于 2017-03-17 15:58:08 并被添加「」标签,已有 859 位童鞋阅读过。
此处评论已关闭