Tôi đang sử dụng Laravel 4 và đặc biệt tôi đang tìm câu trả lời sử dụng ORO hùng hồn.Laravel: trả lại kết quả từ nhiều bảng có liên quan bằng cách sử dụng eloquent
Tôi có một bảng "nhiệm vụ" mà đựng một client_id và user_id gán cho mỗi hàng.
client_id đề cập đến một khách hàng trên cơ sở "khách hàng" bảng và user_id dùng để chỉ một người dùng trên một "người dùng" bảng.
Những gì tôi muốn làm: hiển thị tất cả các nhiệm vụ và hiển thị "khách hàng" tên và "người dùng" first_name
Vì vậy, kết quả sẽ trông như thế này trong tôi (lưỡi) chế độ xem:
@foreach($tasks as $task)
<tr>
<td>{{ $task->user->first_name }}</td>
<td>{{ $task->client->name }}</td>
<td>{{ $task->description }}</td>
</tr>
@endforeach
Chế độ xem trên chỉ ra $ task-> client-> name hoàn toàn tốt nhưng tiếc là hiển thị "T rying để có được tài sản của phi vật thể" khi tôi thêm dòng $ task-> user-> first_name
điều khiển của tôi trông như thế này:
$tasks = Task::with(array('user', 'client'))->get();
return View::make('index', compact('tasks'));
Theo tôi được biết mô hình của tôi làm cho một sự khác biệt quá, nên mô hình của tôi trông như thế này:
class Task extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function client() {
return $this->belongsTo('Client');
}
public function user() {
return $this->belongsTo('User');
}
}
Và:
class User extends Eloquent implements UserInterface, RemindableInterface {
public function task()
{
return $this->hasMany('Task');
}
}
Và:
class Client extends Eloquent {
public function projects(){
return $this->hasMany('Project', 'client_id');
}
}
Bất kỳ ý tưởng nào về cách thực hiện công việc này? Tôi đã gãi đầu của tôi trong một thời gian - cũng lưu ý tôi không phải là một mối quan hệ cơ sở dữ liệu chuyên nghiệp nên đơn giản hơn những lời giải thích thì càng tốt :)
Có vẻ như với tôi rằng bảng Nhiệm vụ của bạn là một pivot table trong một mối quan hệ nhiều-nhiều. Có lẽ bạn nên sử dụng phương thức isToany() của Eloquent để liên kết trực tiếp với Client và User. Xem [this] (http://laravel.com/docs/eloquent#working-with-pivot-tables) để biết thông tin về cách thêm các trường bổ sung vào bảng tổng hợp của bạn. – ciruvan
Xin chào @cuewizchris Tôi đã xem tài liệu và tôi không thể tìm ra cách dịch ví dụ về Người dùng/Vai trò/Pivot theo nhu cầu của tôi. Bạn đang nói tôi nên thay đổi hasMany() của mình thành toMany()? Tôi hơi lạc mất ở đây. – Josh