onethinkphp 如何做多表關聯查詢 求大神把程式碼貼出來
回覆
前提是2個分表有關聯欄位在主表
$list=M('order')->where("orderid='$orderid'")->select();
$detail=M('shoplist');
foreach($list as $n=> $val){
$list[$n]['id']=$detail->where('orderid=\''.$val['id'].'\'')->select();
}
$trans=M('transport');
foreach($list as $k=> $va){
$list[$k]['addressid']=$trans->where('id=\''.$va['addressid'].'\'')->select();
}
$this->assign('list', $list);
模版呼叫,
<volist name="list" id="po">
<volist name="po['id']" id="vo"> </volist>
<volist name="po['addressid']" id="ao"> </volist>
</volist>
$list=M('order')->where("orderid='$orderid'")->select();
$detail=M('shoplist');
foreach($list as $n=> $val){
$list[$n]['id']=$detail->where('orderid=\''.$val['id'].'\'')->select();
}
$trans=M('transport');
foreach($list as $k=> $va){
$list[$k]['addressid']=$trans->where('id=\''.$va['addressid'].'\'')->select();
}
$this->assign('list', $list);
模版呼叫,
<volist name="list" id="po">
<volist name="po['id']" id="vo"> </volist>
<volist name="po['addressid']" id="ao"> </volist>
</volist>
評論
<?php namespace Common\Model; use Think\Model\RelationModel; /** * 日誌關聯模型 */ class ArticleRelationModel extends RelationModel { protected $tableName = 'article'; // 表名 protected $fields = array( 'id', 'cid', 'title', 'content', 'create_time', 'update_time', 'click', 'is_del', ); protected $_link = array( 'attribute'=>array( 'mapping_type' => self::MANY_TO_MANY, 'mapping_name' => 'attribute', 'class_name' => 'attribute', // 要關聯的模型類名 'foreign_key' => 'art_id',// 關聯的外來鍵名稱 外來鍵的預設規則是當前資料物件名稱_id 'relation_foreign_key' => 'attr_id',// 關聯表的外來鍵名稱 預設的關聯表的外來鍵名稱是表名_id 'relation_table' => 'curder_article_attribute', 'mapping_fields' => 'name,color', // 限制關聯表欄位 'mapping_order' => 'attr_id asc', 'mapping_limit' => '', ), 'category' => array( 'mapping_type' => self::BELONGS_TO, 'foreign_key' => 'cid',// 關聯的外來鍵名稱 外來鍵的預設規則是當前資料物件名稱_id 'mapping_fields' => 'name', // 限制關聯表欄位 'as_fields' => 'name:category' ) ); } ?>這是ThinkPHP的關聯模型 繼承自RelationModel類 定義一下$_link 私有屬性 呼叫的時候new一個model 使用鏈式呼叫中加一個 relation(true) 即可 具體可參考tp的3.2.2 模型->關聯模型 一欄