入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

ThinkPHP的关联Model要注意的几点

创建时间:2014-05-14 投稿人: 浏览次数:5887

<?php

class RoomSupplierListModel extends RelationModel {

    protected $tableName = "room_supplier";
    public $_link;

    public function __construct($name = "") {
        $this->_link = array(
            "HotelRoomSell" => array(
                "mapping_type" => HAS_MANY,
                "parent_key" => "rs_id",//parent_key一定是主键,否则会列不出子表的数据
                "foreign_key" => "hrs_rsid",
                "condition" => " hrs_checkin_date >= "" . $_POST["stime"] . "" and hrs_checkin_date <= "" . $_POST["etime"] . "" "
            
            ),
            "Suppliers" => array(
                "mapping_type" => BELONGS_TO,
                "parent_key" => "s_id",
                "foreign_key" => "rs_sid",
                "as_fields" => "s_name"
            ),
            "Hotel" => array(
                "mapping_type" => BELONGS_TO,
                "parent_key" => "h_id",
                "foreign_key" => "rs_hid",
                "as_fields" => "h_name"
            ),
            "HotelRoom" => array(
                "mapping_type" => BELONGS_TO,
                "parent_key" => "hrm_id",
                "foreign_key" => "rs_rid",
                "as_fields" => "hrm_title,hrm_issell,hrm_id"
            ),
        );
        parent::__construct($name);
    }

}

HAS_MANY的情况下
//parent_key一定是主键,否则会列不出子表的数据

多个HAS_MANY不能指定as_fields很奇怪


<?php

class OrderListModel extends RelationModel {

    protected $tableName = "hotel_room_order";
    protected $_link = array(
        "HotelRoomOrderItem" => array(
            "mapping_type" => HAS_MANY,
            "parent_key" => "hro_id",
            "foreign_key" => "hroi_hroid",
            "mapping_fields" => "hroi_nums,hroi_checkin_date,hroi_checkout_date,hroi_price,hroi_is_checkin"
        ),
        "HotelRoomOrderTicket" => array(
            "mapping_type" => HAS_MANY,
            "parent_key" => "hro_id", //当前表的ID  很坑;不看源码不可能知道的事
            "foreign_key" => "hrot_hroid", //外表的ID
//              "mapping_fields" => "hrot_use_date,hrot_nums,hrot_price,hroi_is_checkin"
        //多个HAS_MANY的时候;只能同时存在一个 mapping_fields;否则无法查出数据;
        ),
        "Hotel" => array(
            "mapping_type" => BELONGS_TO,
            "parent_key" => "h_id",
            "foreign_key" => "hro_hid",
            "as_fields" => "h_name"
        ),
        "HotelRoom" => array(
            "mapping_type" => BELONGS_TO,
            "parent_key" => "hrm_id",
            "foreign_key" => "hro_rid",
            "as_fields" => "hrm_title"
        ),
        "AgentUser" => array(
            "mapping_type" => BELONGS_TO,
            "parent_key" => "id", //外表的ID  BELONGS_TO才有parent_key属性;
            "foreign_key" => "hro_auid", //当前表的ID
            "as_fields" => "account,nickname"
        ),
        "HotelRoomOrderMember" => array(
            "mapping_type" => HAS_ONE,
            // "parent_key" => "hro_id", //HAS_ONE,默认使用主键进行关联,没有这个属性,设置了和没设一个鸟样
            "foreign_key" => "hrom_hroid",
            "as_fields" => "hrom_name,hrom_tel"
        ),
    );

}


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。