zoukankan      html  css  js  c++  java
  • TP6.0 一对多模型关联 hasMany

    本文测试关联方法都采用预载入查询

    $data = Article::with('comments')->select();
    halt($data->toArray());
    

    1. 创建数据表


    -- 文章表
    CREATE TABLE `article` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `title` varchar(255) DEFAULT NULL,
      `content` text,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    INSERT INTO `article` VALUES (1, 'PHP数据类型', '文章内容01');
    INSERT INTO `article` VALUES (2, 'Java常量池', '文章内容02');
    INSERT INTO `article` VALUES (3, 'Vue Cli 4 引入图片地址', '文章内容03');
    
    -- 文章评论表
    CREATE TABLE `comments` (
      `id` int(255) NOT NULL AUTO_INCREMENT COMMENT '评论ID',
      `article_id` int(11) DEFAULT NULL COMMENT '文章ID',
      `content` varchar(500) DEFAULT NULL COMMENT '评论内容',
      `create_time` int(11) DEFAULT NULL COMMENT '评论时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    INSERT INTO `comments` VALUES (1, 1, '作者文采太好了', 1597560224);
    INSERT INTO `comments` VALUES (2, 1, '说的太对了', 1597560224);
    INSERT INTO `comments` VALUES (3, 2, '这篇文章真不错,值得收藏', 1597560224);
    

    2. 文章模型定义一对多关联方法


    public function comments()
    	{
    		/**
    		 * hasMany('关联模型', '关联模型外键','当前模型主键');
    		 * Comments 评论模型
    		 * article_id 评论表的外键字段,关联模型外键
    		 * id 文章表主键字段,当前模型主键
    		 */
    		return $this->hasMany(Comments::class, 'article_id', 'id');
    	}
    

    3. hasMany() 支持的额外方法


    • 不支持 bind() 绑定关联属性到模型,因为结果是二维数组,所以不支持

    • 支持 hidden() 隐藏指定的关联属性

    public function comments()
    {
    	return $this->hasMany(Comments::class, 'article_id', 'id')
    		->hidden(['create_time', 'content']);
    }
    

  • 相关阅读:
    每日一题
    每日一题
    每日一题
    每日一题
    每日一题
    Tensorflow学习(四)——递归神经网络RNN
    Tensorflow学习(三)——卷积神经网络应用于MNIST数据集分类
    Tenserflow学习(二)——MNIST数据集分类三层网络搭建+Dropout+tensorboard可视化
    Tenserflow学习(一)——MNIST数据集分类简单版本
    蓝桥杯第十届(2019)B组省赛1-9题练手源码
  • 原文地址:https://www.cnblogs.com/cfmy/p/13515670.html
Copyright © 2011-2022 走看看