模型一对多

建立模型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"=>"这里是更新过的内容"]);

你可能感兴趣的:(模型一对多)