2019-05-13 19:20:59 1376次浏览 4条回答 0 悬赏 10 金钱

首先,user 表和 share 表属于一对一的关联关系;
创建一个实例 $user = User::find()->with('share')->where(['id' => 1])->one();
$user->sharenull 时,添加一个和 $user 相关的 share 数据进入数据库
此时,使用 $user->share 查询还是为 null
那么,需要怎么操作才能使 $user->share 显示的是我刚添加的数据呢?

  • 回答于 2019-05-14 08:57 举报

    模型里 定义 关联关系了么

    1 条回复
    回复于 2019-05-14 10:12 回复

    关联关系已定义,不然的话是会报错的,而不是返回null

  • 回答于 2019-05-14 09:23 举报

    在User的模型里,增加:

    public function getShare(){
        return $this->hasOne(Share::className(),['id'=>'share_id']);
    }
    
    1 条回复
    回复于 2019-05-14 10:12 回复

    关联关系已定义,不然的话是会报错的,而不是返回null

  • 回答于 2019-05-14 11:51 举报
    public function getShare(){
        return $this->hasOne(Share::className(),['id'=>'share_id']);
    }
    

    这个和left join有啥区别?

  • 回答于 2019-05-14 15:21 举报
    public function getShare(){
        return $this->hasOne(Share::className(),['id'=>'share_id']);
    }
    

    这样写没问题,如果有问题就是你没有设置 外键share_id于user主键关联值。

    还有可能是你是否有设置同名的 $share 成员变量;

您需要登录后才可以回答。登录 | 立即注册
风哀伤
经理

风哀伤 嘉兴

注册时间:2017-09-29
最后登录:2023-12-07
在线时长:11小时25分
  • 粉丝2
  • 金钱1680
  • 威望10
  • 积分1890

热门问题