关于php:tp-模型关联用法

27次阅读

共计 841 个字符,预计需要花费 3 分钟才能阅读完成。

在数据库查问中,不免要多表联查,tp 给咱们提供了一个 模型关联,来防止咱们 应用 join 来做关联。

我这里以一对多为例子:

order 表为主表,order_goods 为关联表。

定义 order 模型

<?php
namespace appmodel;
use thinkModel;
class Order extends Model
{public  function goodsList()
 { 
    // 能够以链式操作的形式,对查问的数据进行筛选~~~~。如我这里只查问商品图片。return $this->hasMany(OrderGoods::class,'order_id','order_id')
 ->field('goods_image as image');
 }
}

定义 order_goods 表模型

<?php
namespace appmodel;
use thinkModel;
class OrderGoods extends Model
{// 因为是关联表所以能够什么都不行写,但必须要定义}

当咱们要查问一个订单并获取这个定中的商品时:

order 表查问一条记录:
<?php
declare (strict_types = 1);
namespace app\controller\api;

use app\model\OrderGoods;
use app\model\Order as OrderModel;
class Order extends Base{public function order(){
        // 查问到这条数据
        $data = OrderModel::find(1);
        // 间接调用一下关联的办法,获取关联数据
        $data->goodsList;
    }

}
当 order 表查问多条记录时
public function order(){
        // 查问到是多条数据
        $list = OrderModel::where('id','>',1)->select();
        foreach ($list as $item){
            // 一对多关联查问
            $item->goodsList;
        }
    }

其余关联形式的应用也是相似的。

正文完
 0