【问题标题】:How to fetch data based on id condition in Laravel如何在 Laravel 中根据 id 条件获取数据
【发布时间】:2020-07-13 18:03:42
【问题描述】:

我正在尝试根据 case_id 获取数据,该数据来自 case 表,并且我在我的套接字表中 fk (case_id),但我在响应中得到空数组:

这是我的控制器:

public function index($case_id)
    {
        $id = kase::find($case_id);

        $data = DB::table('sockets')->where('case_id',$id)->get();
        return $data;
    }

我的路线:

 Route::get('/case-log/{id}', 'CaseLogController@index');

我哪里错了?

【问题讨论】:

    标签: php laravel model foreign-keys


    【解决方案1】:

    你得到 kase::find($case_id) 的空值,因为 laravel 假定主键和索引被命名为“id”。要在您的 kase 模型上覆盖此设置,请按如下方式进行设置。您还可以按如下方式与您的 socket 模型建立关系:

    class kase extends Model
    {
        ...
        protected $primaryKey = 'case_id';
        ...
        
        
        public function sockets()
        {
            return $this->hasMany(socket::class, 'case_id');
        }
    }
    

    您还需要让您的控制器方法参数与您的路由参数相匹配。所以:

    public function index($id)
    {
        $case = kase::with('sockets')->find($id);
       
        return $case->sockets;
    }
    
    

    【讨论】:

      【解决方案2】:

      路由中的 slug 名称应与 index 方法中的参数名称匹配,因此您必须更改其中之一

      Route::get('/case-log/{case_id}', 'CaseLogController@index');
      

      public function index($case_id)
      {
          $id = kase::find($case_id);
      
          $data = DB::table('sockets')->where('case_id',$id)->get();
          return $data;
      }
      

      【讨论】:

        猜你喜欢
        • 2018-07-31
        • 2020-02-16
        • 2017-12-07
        • 2014-12-17
        • 2020-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        相关资源
        最近更新 更多