我怎样才能“原始”列(DB ::原始)。 [LARAVEL]

时间:2019-03-23 15:19:44

标签: laravel

我的目标是为位置自动输入文字。当我输入“ 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列”之类的临时列“放置”在上面的代码中吗?因为我尝试了该代码,但实际上没有返回任何数据

先生,需要您的帮助。

1 个答案:

答案 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();