【发布时间】:2018-06-13 06:11:21
【问题描述】:
我正在尝试编辑一列数据表以在我的索引视图表中显示信息。
这是我在视图中通过 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'。
我已经阅读了这个questions,但我认为我的数据库表没问题,因为增量在Laravel migrations 中是等效的主键。
这是我对表“字段”的迁移:
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();
});
}
谢谢
【问题讨论】:
-
您在使用软删除吗?查询生成器 where 还返回(查找)“软删除”条目,其中 find 不包括那些。另外,你的 $az_id 变量是什么类型(它的值是什么)?
-
不,我没有使用软删除。我忘了添加 find($az_id) 将“字段”表的所有记录返回给我。
-
对不起。 $az_id 是错误的。正确的名称是 $f_id,它是一个整数。
-
嗯...你使用的是什么版本的 laravel?如果您尝试在“修补程序”模式下运行这两个语句,您是否尝试检查返回的内容?
-
我使用的是 Laravel 5.4 版本。我不知道它是什么“修补”模式,但如果我尝试这个,在循环之外: Fields::find(1) -> pluck('field_name');我找回了这个 [''Name1","Name2", ... "NameN"]
标签: laravel datatable eloquent laravel-migrations yajra-datatable