Laravel Eloquent:提取以提供的字符串列表开头的所有条目

时间:2017-12-19 16:30:11

标签: laravel laravel-5 eloquent

以下请求从users表中提取所有条目,其中name = Albert或name = Alberto或name = Ana。

$users = DB::table('users')
    ->whereIn('name', ['Albert', 'Alberto', 'Ana'])
    ->get();

是否有可能调整此请求以提取以以下名称开头的所有条目

4 个答案:

答案 0 :(得分:1)

在基本的where函数上使用like运算符:

$users = DB::table('users')
            ->where('name', 'like', 'T%')
            ->get();

Source

修改 基于此answer(但简化),这是一个解决您问题的简单闭包:

$queryStr = ['Albert', 'Alberto', 'Ana'];
$users = DB::Table('users')            
    ->where(function ($query) use ($queryStr) {
         foreach($queryStr as $q){
            $query->orwhere('name', 'like',  $q . '%');
         }      
    })->get();

答案 1 :(得分:1)

为什么不链接variables { dword logFile; // logfile handle int i; char results[1024]; // store our formatted string } on start { setFilePath("C:\\Demo\\Results", 2); // 2 = read & write logFile = openFileWrite("Results.txt", 2); // 2 = append file for (i = 0; i < 10; i++ ) { snprintf(results, 1024, "The value of 'i' is %d\n", i); filePutString(results, 1024, logFile); } fileClose(logFile); } 子句:

orwhere

答案 2 :(得分:0)

->whereRaw(name in(\'Albert\', \'Alberto\', \'Ana'\)')

->where(name, 'LIKE', 'Albert%')
->orWhere(name, 'LIKE', 'Ana%')

答案 3 :(得分:0)

最简单的方法

最简单的方法是嵌套QueryBuilder的$(document).on('click', '#printform', function(e){ call controller...(How do I do it?) }); where方法:

orWhere

更适用于大型名称

您可以使用QueryBuilder的<?php $users = DB::table('users') ->where('name', 'like', 'Albert%') ->orWhere('name', 'like', 'Alberto%') ->orWhere('name', 'like', 'Ana%') ->get(); ?> 方法,并将其与一些基本的php和sql结合使用。这样,MySQL注入也会自动被阻止。

whereRaw