我试图通过列的belongsToMany关系中的表搜索数据表。在这种情况下,表格是tags
。Laravel数据表搜索belongsToMany名称
这里是有问题的表格:
Schema::create('leads', function (Blueprint $table) {
$table->increments('id');
$table->text('data');
$table->timestamps();
});
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('color');
$table->timestamps();
});
Schema::create('tag_lead', function (Blueprint $table) {
$table->increments('id');
$table->integer('lead_id');
$table->integer('tag_id');
});
这里是我的模型代码:
class Lead extends \Eloquent
{
public function tags()
{
return $this->belongsToMany('App\Tag');
}
}
这里是我的控制器代码:
$leads = Lead::with('tags')->get();
return Datatables::of($leads)
->filterColumn('tags', function($query, $keyword) {
$query->whereRaw('tags.name like ?', ['%'.$keyword.'%']);
})
->make(true);
这里是我的JS代码:
$('#leads-datatable').DataTable({
ajax: '{{ route('backend.leads.datatable') }}',
columns: [
{ data: 'id' },
{ data: 'data' },
{ data: 'tags', sortable: false },
{ data: 'created_at' },
{ data: 'updated_at' }
]
});
这不起作用,并产生错误mb_strtolower() expects parameter 1 to be string, array given
。
我只希望datatables搜索每个潜在顾客的所有标签名称。我该怎么做呢?
'“%” $关键字'%''尽量不要将它作为数组传递 – Nour
'$ keyword'的类型是什么?字符串或数组? –