2015-06-19 27 views
16

Tôi đang gọi URL với các tham số tìm kiếm động. Làm cách nào để tôi có thể tạo một yêu cầu thích hợp Eloquent?Laravel: mệnh đề động với Elouquent

Về lý thuyết:

  1. truy vấn
  2. truy vấn nơi (someParam1)
  3. truy vấn nơi (someParam2)
  4. truy vấn orderby (someParam3)
  5. truy vấn được

Tôi cần loại cấu trúc này để tôi có thể sử dụng mệnh đề where nếu param tồn tại. Nếu có một số cách khác trong Laravel, vui lòng cho tôi biết.

Trả lời

41

Thật dễ dàng với Laravel. Chỉ cần làm một cái gì đó như thế này:

$query = User::query(); 

if ($this == $that) { 
    $query = $query->where('this', 'that'); 
} 

if ($this == $another_thing) { 
    $query = $query->where('this', 'another_thing'); 
} 

if ($this == $yet_another_thing) { 
    $query = $query->orderBy('this'); 
} 

$results = $query->get(); 
+0

Và tôi có một vấn đề với dòng đầu tiên. Nó chỉ có thể xảy ra rằng sẽ không có nơi params :) Làm thế nào tôi có thể bắt đầu truy vấn sau đó? –

+7

Nếu bạn muốn bắt đầu truy vấn trống, chỉ cần thực hiện '$ query = User :: query()'. Sau đó, bạn có thể thêm tất cả các điểm có điều kiện và nhận được kết quả ở cuối. – wunch

+0

@wunch Tôi sẽ thử nó, cảm ơn bạn. –

0

Bạn có thể vượt qua giá trị động bởi bên dưới ví dụ

$user_auctions = $this->with('userAuctions') 
       ->where('users.id', '=', $id) 
       ->get(); 
Các vấn đề liên quan