Laravel模型::find($id)不';t筛选结果

Laravel模型::find($id)不';t筛选结果,laravel,datatable,eloquent,laravel-migrations,yajra-datatable,Laravel,Datatable,Eloquent,Laravel Migrations,Yajra Datatable,我试图编辑datatable的一列,以显示索引视图表中的信息 这是我在视图中通过Ajax调用的控制器方法: public function getField(){ // Current User $user_id = \Auth::user()->id; $users = User::find($user_id)->users(); return Datatables::of($users ) -&g

我试图编辑datatable的一列,以显示索引视图表中的信息

这是我在视图中通过Ajax调用的控制器方法:

public function getField(){

       // Current User
        $user_id = \Auth::user()->id;
        $users = User::find($user_id)->users();
        return Datatables::of($users )
          ->editColumn('id', '<a href="'.url('users').'/{{$id}}/edit">Edit</a>')
          ->editColumn('fields_id', function($users) {
             $mystring = '';
             $fields_id_array = json_decode($users->fields_id);
             foreach($fields_id_array as $f_id){         

                /* this works */  
                // $mystring  .=  Fields::where('id', '=', $f_id) -> pluck('field_name');

                /* this doesn't work */  
                $mystring  .=  Fields::find($f_id) -> pluck('field_name');
             }
             return $mystring;
          })
          ->rawColumns(['id'])
          ->make(true);
      }

谢谢你,根据你最后的评论,这里有个猜测

在你的身体里试试这个

$mystring  .=  Fields::find(intval($f_id))->pluck('field_name');

我已经在您的
$f_id
周围添加了intval()函数,因为您说过它们是这种格式的['1'、'2'、'5']。这是一个字符串数组(如果您计划将其与
find()
函数一起使用,则应将其转换为整数。

是否使用软删除?查询生成器也会返回(查找)“软删除”条目,其中as-find不包括这些条目。另外,$az_id变量是什么类型的(其值是什么)不,我没有使用软删除。我忘了添加find($az_id)并将“Fields”表的所有记录返回给我。对不起,$az_id是错误的。正确的名称是$f_id,它是一个整数。嗯……你使用的是什么版本的laravel?如果你尝试运行“tinker”中的两个语句,你是否尝试检查你得到了什么模式?我使用的是Laravel5.4版本。我不知道它是什么“修补程序”模式,但如果我尝试这个,在循环之外:Fields::find(1)->pull('field_name');我得到这个['Name1”,“Name2”,“NameN”…“NameN”]我已经尝试过:$mystring.=Fields::find(intval('f_id))->pull('field_name'));但不起作用。我也可以这样做:$fields\u id\u array=json\u decode($user->fields\u id);$fields\u array=fields::其中('id',$fields\u id\u array)->pulk('field\u name')->toArray();它起作用,但我不理解为什么查找不起作用,如果你添加($fields\u id\u array);就在循环之前?因为正如你所说的……如果你调用Fields::find(1)->pull('field_name'),你会得到你想要的数组,这就是为什么我认为问题在于你传递的参数值我不能调用dd(),但print_r($Fields_id_array)返回这个:array([0]=>1[1]=>3)在本例中,我的循环两次取出所有记录:[“Name1”、“Name2”、“Name3”][“Name1”、“Name2”、“Name3”]我向问题添加了另一个细节;它会输出正确的键“id”。抱歉,我没有办法尝试…只是为了检查我是否正确理解问题…当您运行$mystring.=Fields::where('id','=',$f_id)->pull('field_name');在循环中,您可以正确返回结果,如果您运行$mystring.=Fields::find('f_id)->pull('field_name');然后你什么也得不到?正如我写这篇文章时,你是否尝试打印(var_dump)你试图附加到$mystring的结果(以防这是一个可能导致某些问题的数组)
$mystring  .=  Fields::find(intval($f_id))->pluck('field_name');