我的目标是为位置自动输入文字。当我输入“ streetNo”,“ city”或“ country”之类的相关数据时,应该返回
我刚刚创建了一个原始列“ full_address”,将“ streetNo”,“ city”和“ country”列连接在一起。
这里是我的代码:
$searchAddress = $r->input('address'); //dynamic
$profile = DB::table('student')
->select(
'students.id',
'students.name',
'students.class',
'students.schedule',
'inf.streetNo',
'inf.city',
'inf.country',
DB::raw("(CONCAT(inf.streetNo,' ',inf.city,' ',inf.country)) AS full_address")
)
->where('full_address', 'LIKE', "%{$searchAddress}%")
->join('informations AS inf', 'inf.student_id', 'students.id')
->get();
我尝试搜索现有数据,例如“城市或国家/地区”,但未返回任何数据。我怀疑将数据“放置”在哪里有问题。
问题是,我们可以将“ full_address列”之类的临时列“放置”在上面的代码中吗?因为我尝试了该代码,但实际上没有返回任何数据
先生,需要您的帮助。
答案 0 :(得分:1)
我尝试了不同的方法来“在哪里” 原始列,但是没有返回任何数据,因此我假设这些代码
->where('full_address', 'LIKE', "%{$searchAddress}%")
我认为语法错误。
我们不能对原始列使用“ where子句” ,例如“ full_address”。
所以我要做的是,我不再创建诸如“ full_address”之类的原始列,而是直接将DB :: Raw
“放置”在其中。
请参阅我的最终代码和工作代码:
$searchAddress = $r->input('address'); //dynamic
$profile = DB::table('student')
->select(
'students.id',
'students.name',
'students.class',
'students.schedule',
'inf.streetNo',
'inf.city',
'inf.country'
)
->where(DB::raw("CONCAT(inf.streetNo,' ',inf.city,' ',inf.country)), 'LIKE', "%{$searchAddress}%")
->join('informations AS inf', 'inf.student_id', 'students.id')
->get();