2014-09-11 39 views
5

Hi Tôi muốn lấy tôi projects tổ chức tại một db mà được sở hữu bởi một auth user người cũng tạo ra clients (họ có nhiều dự án, nhiệm vụ) và tasks (thuộc về một dự án và nhiệm vụ và người dùng).laravel mối quan hệ hùng hồn với và mệnh đề where dựa trên cột nước ngoài

Tôi muốn lấy tất cả các công việc mà không được đánh dấu là đóng cửa vào bảng trạng thái, tôi biết id của việc này là 2 và tôi có thể lấy điều này như vậy:

public function getOpenProjects() { 

    return \Project::with(['clients', 'tasks', 'status']) 
     ->where('status_id', '!=', '2') 
     ->whereUserId(Auth::user()->id) 
     ->get(); 
} 

Nhưng làm thế nào tôi có thể thay đổi điều này truy vấn với một cột trong bảng trạng thái, tức là cột tên trong bảng đó?

Trả lời

16

Bạn có thể thử này:

$value = 'someName'; 
Project::with(['clients', 'tasks', 'status' => function($q) use($value) { 
    // Query the name field in status table 
    $q->where('name', '=', $value); // '=' is optional 
}]) 
->where('status_id', '!=', '2') 
->whereUserId(Auth::user()->id) 
->get(); 

Ngoài ra bạn có thể thử này (Nó sẽ lấy hồ sơ chỉ khi query lợi nhuận name bạn muốn, nếu không không có):

$value = 'someName'; 
Project::with(['clients', 'tasks', 'status']) 
     ->whereHas('status', function($q) use($value) { 
     // Query the name field in status table 
     $q->where('name', '=', $value); // '=' is optional 
}) 
->where('status_id', '!=', '2') 
->whereUserId(Auth::user()->id) 
->get(); 
+0

Tôi muốn truy vấn trường tên bảng trạng thái chứ không phải bảng dự án – 001221

+0

Vâng, đó là '$ q-> where ('name', '=', $ value)' bên trong 'closure' là giá trị của' status'. –

+0

tại sao nó tìm nạp trạng thái bằng null? – 001221

0

Bạn có thể thử này :

Project::with(['clients', 'tasks' => function($q) use($value) { 
// Query the name field in status table 
    $q->where('status_id', '!=', '2'); 
}]) 
->whereUserId(Auth::user()->id) 
->get(); 
Các vấn đề liên quan