0

我正在尝试编辑一列数据表以在我的索引视图表中显示信息。

这是我在视图中通过 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);
      }

users 表中的字段 'fields_id' 是一个 JSON 字段,如下所示:['1','2','5'],这些是指另一个表的 id:'Fields'。

我已经阅读了这个问题,但我认为我的 db 表没问题,因为增量在Laravel 迁移中是等效的主键。

这是我对表“字段”的迁移:

public function up()
    {
        Schema::defaultStringLength(191);
        Schema::create('fields', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users');
            $table->string('code')->unique();
            $table->string('param1');
            $table->string('param3')->nullable();
            $table->timestamps();
        });
    }

谢谢

4

1 回答 1

1

根据您的最后评论,这里是一个疯狂的猜测......

在你的循环里面试试这个

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

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

于 2018-01-03T19:14:02.180 回答