Laravel:使用eloquent从多个相关表中返回结果

Jos*_*osh 9 php laravel eloquent laravel-4

我正在使用Laravel 4,特别是我正在寻找一个使用雄辩的ORM的答案.

我有一个表" tasks ",它将client_iduser_id分配给每一行.

client_id指的是" clients "表上的客户端,user_id指的是" users "表上的用户.

我想做的事:显示所有任务并显示" clients " 名称和" users " first_name

所以结果在我的(刀片)视图中看起来像这样:

@foreach($tasks as $task)
    <tr>
        <td>{{ $task->user->first_name }}</td>
        <td>{{ $task->client->name }}</td>
        <td>{{ $task->description }}</td>
    </tr>
@endforeach
Run Code Online (Sandbox Code Playgroud)

上面的视图完全吐出$ task-> client->名称,但不幸的是当我添加行$ task-> user-> first_name时显示"试图获取非对象的属性"

我的控制器看起来像这样:

$tasks = Task::with(array('user', 'client'))->get();
return View::make('index', compact('tasks'));
Run Code Online (Sandbox Code Playgroud)

据我所知,我的模型也有所不同,所以我的模型看起来像这样:

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');
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

class User extends Eloquent implements UserInterface, RemindableInterface {
    public function task()
    {
        return $this->hasMany('Task');
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

class Client extends Eloquent {
    public function projects(){
        return $this->hasMany('Project', 'client_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

关于如何使这项工作的任何想法?我一直在摸不着头脑 - 还注意我不是数据库关系亲,所以解释越简单越好:)

use*_*496 2

我刚刚完成了这个工作,自己也学到了很多东西。users我所做的是在和之间设置多对多关系clients,并创建一个数据透视表来处理称为的关系tasks,该表还存储每个任务的描述。

这里输入的内容太多了,但是您可以在http://paste.laravel.com/Fpv查看我的代码

  • 它永远不会“在这里输入太多”。我无法解析你的链接。 (6认同)