Gebruik geëloquent orm in Laravel om de database te zoeken met behulp van zoals

Ik wil het actieve recordgebouw van Eloquent gebruiken om een ​​zoekopdracht te bouwen, maar het wordt een soortgelijke zoekopdracht. Ik heb de User::find($term)of User::find(1), maar dit genereert een soortgelijke verklaring niet. Ik ben niet op zoek naar een direct antwoord, maar als iemand me op zijn minst een richting kan geven om in te kijken, wees geweldig!


Antwoord 1, Autoriteit 100%

U kunt de database vinden gevonden met behulp van zoals met deze syntaxis:

Model::where('column', 'LIKE', '%value%')->get();

Antwoord 2, Autoriteit 27%

Als u regelmatig wilt gebruiken, kunt u het probleem een ​​beetje vereenvoudigen. Een aangepaste methode zoals () kan worden gemaakt in het model dat de geëloquente ORM erft:

public  function scopeLike($query, $field, $value){
        return $query->where($field, 'LIKE', "%$value%");
}

Dus dan kunt u deze methode op zo’n manier gebruiken:

User::like('name', 'Tomas')->get();

Antwoord 3, Autoriteit 12%

FYI, de lijst met operators (met zoals en alle anderen) is in code:

/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
protected $operators = array(
    '=', '<', '>', '<=', '>=', '<>', '!=',
    'like', 'not like', 'between', 'ilike',
    '&', '|', '^', '<<', '>>',
    'rlike', 'regexp', 'not regexp',
);

Disclaimer:

Het antwoord van Joel Larson is correct. Heb mijn upvote.

Ik hoop dat dit antwoord meer licht werpt op wat er via de welsprekende ORM beschikbaar is (Points People in de rechter directe ). Hoewel een link naar documentatie ver zou zijn beter, heeft die link zelf ongrijpbaar bewezen.


Antwoord 4, Autoriteit 7%

Gebruik dubbele aanhalingstekens in plaats van een enkele offerte, bijvoorbeeld:

where('customer.name', 'LIKE', "%$findcustomer%")

Hieronder vindt u mijn code:

public function searchCustomer($findcustomer)
{
    $customer = DB::table('customer')
                  ->where('customer.name', 'LIKE', "%$findcustomer%")
                  ->orWhere('customer.phone', 'LIKE', "%$findcustomer%")
                  ->get();
    return View::make("your view here");
}

Antwoord 5

Als u niet van dubbele citaten zoals ik houdt, werkt dit voor u met enkele aanhalingstekens:

$value = Input::get('q');
$books = Book::where('name', 'LIKE', '%' . $value . '%')->limit(25)->get();
return view('pages/search/index', compact('books'));

Other episodes