我正在尝试编辑数据表列以在索引视图表中显示信息。
这是我的控制器方法,我在视图中通过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);
}
字段&#39; fields_id&#39;在users表中是一个JSON字段,如下所示:[&#39; 1&#39;,&#39; 2&#39;,&#39; 5&#39;]这些是指另一个的id表格:&#39;字段&#39;。
我已经读过这个questions,但我认为我的db表没问题,因为增量是Laravel migrations中的主键等价物。
这是我对表格&#39;
的迁移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();
});
}
由于
答案 0 :(得分:1)
根据您的上一条评论,在这里疯狂猜测......
在你的循环中尝试这个
$mystring .= Fields::find(intval($f_id))->pluck('field_name');
我已经在你的$f_id
周围添加了intval()函数,因为你说你说的是这种格式[&#39; 1&#39;,&#39; 2&#39;, &#39; 5&#39]。这是一个字符串数组(如果您计划将它们与find()
函数一起使用,则应该转换为整数。