【发布时间】:2020-07-30 00:02:41
【问题描述】:
我有一个具有以下属性的表组织
id
name
acronym
并通过使用访问器连接组织模型中的名称和首字母缩写词属性来重新格式化组织名称
public function getOrganizationNameAttribute()
{
if($this->acronym != null)
{
return $this->name. ' ('.$this->acronym.') ';
}
else{
return $this->name;
}
}
创建的表单,用户必须在使用 datalist 输入时选择组织
<label class="col-form-label">Organization <span class="star">{{$star ?? ''}}</span></label>
<input list="organizations" type="text" name="organization" class="form-control @error('organization_id') is-invalid @enderror" value="{{old('organization',$old ?? '')}}" placeholder="Ex. TGNP Mtandao, Vodacom" {{$req ?? ''}}/>
<datalist id="organizations">
@foreach($organizations as $organization)
<option value="{{$organization->organization_name}}"/>
@endforeach
</datalist>
当用户选择特定组织时,系统将搜索组织名称并获取其唯一 ID,如果不存在,系统将创建新值并返回 ID
示例在组织表中有值
id:1
name:United Republic of Tanzania
acronym: URT
然后表单返回组织名称为
United Republic of Tanzania (URT)
这是我的问题:
当用户选择坦桑尼亚联合共和国 (URT) 并提交表单时,我希望系统返回 ID 1 但返回 null。我该如何解决这个问题?
【问题讨论】:
-
你在哪里比较你的搜索??
-
具有像
Organization::where('name','LIKE','%'.$value.'%')->get();这样的名称属性,其中值是组织名称 -
你会先检查你的
$value值吗?是空的还是别的? -
是的,我检查了这是函数
public function search($value) { if(!is_null($value)){ $data= Organization::where('name','LIKE','%'.$value.'%')->get(); dd($data); } } -
可能你的表单方法是
post?你应该使用$request->value
标签: laravel eloquent laravel-query-builder laravel-7