【问题标题】:laravel api return nulllaravel api 返回空值
【发布时间】:2018-11-06 04:54:32
【问题描述】:

我有 api 可以返回我的数据。我有一个条件,如果 visible==1 然后返回数据,否则不返回任何东西。

但我收到的是这个

{
    "data": [null, {
        "order": 2,
        "path": "http:\/\/controlpanel.test\/uploads\/7bb61115dd77823d8e8e3f2b6afa401b.png",
        "visible": 1
    }]
}

我希望这是返回

{
    "data": [{
        "order": 2,
        "path": "http:\/\/controlpanel.test\/uploads\/7bb61115dd77823d8e8e3f2b6afa401b.png",
        "visible": 1
    }]
}

没有空值。 这是我的代码

if($this->visible==1){
        return [

            'order' =>$this->order,
            'path' => asset('uploads').'/' . $this->path,
            'visible'=> $this->visible,
        ];
    }

【问题讨论】:

  • post_id 还是posts_id?您的代码使用 post_id,但您的 MySQL 错误消息说 posts_id
  • 它在 MySQL 中的 post_id 也是 ..
  • 表格中没有您要选择的列数据的字段值
  • 通过在 cmets 和 post 函数中定义外键来解决它

标签: mysql laravel api


【解决方案1】:

您有 Posts 模型,因此在关联时,它会在 table 属性中搜索 posts_id。 您可以使用以下任一方法解决问题

  1. 更新评论模块

    public function post(){ return $this->belongsTo(Posts::class , 'post_id'); }

  2. 更新型号名称

from Posts to Post

【讨论】:

    【解决方案2】:

    您需要在 cmets 模型中为 post() 关系定义 FK,例如

    public function post(){
        return $this->belongsTo('App\Posts' , 'post_id');
    }
    

    使用 App\Posts 命名约定 laravel 正在寻找 posts_id 而不是 post_id

    也将您的帖子模型更新为

    public function comments(){
    
        return $this->hasMany('App\Comment', 'post_id');
    
    }
    

    【讨论】:

    • 不工作。似乎问题出在帖子模块中。公共函数 cmets(){ return $this->hasMany('App\Comment'); }
    • 非常感谢,我被困了好几天 :)
    猜你喜欢
    • 2017-07-29
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2020-06-11
    • 2020-12-31
    • 1970-01-01
    相关资源
    最近更新 更多