onethinkphp 如何做多表關聯查詢

發表於2019-05-11
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>
評論
<?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 模型->關聯模型 一欄
評論

相關文章