美文网首页
模型一对多

模型一对多

作者: 廷裕同学 | 来源:发表于2017-06-20 17:16 被阅读21次

    建立模型Users

    namespace app\admin\model;
    use \think\Model;
    class Users extends Model
    {
         // 建立关联属性
         public function comments()
        {
              return $this->hasOne("comments","uid");
        }
    }
    

    建立模型Comments

      namespace app\admin\model;
      use \think\Model;
      class Comments extends Model
      {
    
      }
    

    控制器代码

    单个数据获取

        $users = new Users();
        $data = $users->where("mobilenum",'1875251xxxx')->find();
        $comments = $user->comments()->where("isshow",1)->select();//获取该用户所有通过审核的评论
        print_r($comments);
    

    多个数据

        $users = new Users();
        $users = Users::all(function($query){
            $query->where("ischeack='0'");
        });// 闭包查询 未通过审核的所有用户
        foreach ($users as $key=>$user)
        {
            $user->comments;
            print_r($user->toArray());
        }
    

    关联操作也可以用“getBy字段名”的方法

    $comments = $user->comments()->getByContents("这个文章不错");
    //所生成的sql语句为
    select * from hc_comments where uid=2 and contents='这个文章不错';
    
     // 查询所有评论过的用户
    $user = Users::has("comments")->select();
    // 查询评论过两次以上的用户信息
    $user = Users::has("comments",">=",2)->select();
    // 评论内容是”这个文章不错“的所有用户信息
    $user = Users::hasWhere("comments",["contents"=>"这个文章不错"])->select();
    

    关联更新

    $user = Users::get(1);
    $comments = $user->comments()->getByCotents("这个文章不错");
    $comments->contents = '这里是更新过的内容';
    $comments->save();
    

    也可以使用构造器更新

    $user =Users::get(1);
    $user->comments()->where("id",1)->update(["contents"=>"这里是更新过的内容"]);
    

    相关文章

      网友评论

          本文标题:模型一对多

          本文链接:https://www.haomeiwen.com/subject/rbfaqxtx.html