Yii ActiveRecord 的viaTable示例

Yii中,使用viaTable方法进行关联,通过电影和电影类型示例。

需要建立三个表 电影表  电影类型关联表 类型表表

电影表(movies)

关联表(main)

类型表

电影模型

<?php


namespace api\modules\v1\models;
use api\modules\v1\models\main;
use api\modules\v1\models\typies;
use Yii;
/**
 * This is the model class for table "move".
 *
 * @property int $id
 * @property string $movies
 * @property string $type
 */
class Movie extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'movie';
    }
    public function getInfo(){
        //                                              32
        return $this -> hasMany(typies::className(), ['t_id' => 't_id']) -> viaTable('main', ['m_id' => 'm_id']); 
                //21
    }
    /**
     * @inheritdoc
     */
    public function fields(){
        return [
            "m_id",
            "电影名称"=>"movies",
            "所属类型"=>function (){
                $data = $this->info;
                $arr = [];
                foreach ($data as $v) {
                    $arr[] = $v->t_name;
                }
                $arr = implode(",",$arr);
                return $arr;
            },
        ];
    }
}

类型模型

<?php
namespace api\modules\v1\models;
use Yii;
/**
 * This is the model class for table "typies".
 *
 * @property int $id
 * @property string $t_name
 */
class Typies extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'typies';
    }
}

关联模型:

<?php


namespace api\modules\v1\models;
use Yii;
/**
 * This is the model class for table "main".
 *
 * @property int $move_id
 * @property int $types_id
 * @property int $id
 */
class Main extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'main';
    }


}

运行结果:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值