在Eloquent ORM中使用has_many_and_belongs_to时选择列

时间:2012-09-04 13:45:51

标签: php laravel eloquent

我有三个表,地点,place_user,用户。我想使用has_many_and_belongs_to方法根据Place模型中的place_user表列出用户。但我不想选择所有用户列。我试着通过以下方式做到:

Place::find(1)->users()->get(array('name','email'));

也:

Place::find(1)->users()->first(array('name','email'));

但他们没有用。

处理此问题的最佳方法是什么?

放置模型:

class Place extends Eloquent {

    public static $timestamps = true;

    public function users()
    {
        return $this->has_many_and_belongs_to('user');
    }


}

用户模型:

class User extends Eloquent {

    public static $timestamps = true;

    public function get_updated_at_readable()
    {
        return date('d.m.Y / H:i:s', strtotime($this->get_attribute('updated_at')));
    }

    public function get_created_at_readable()
    {
        return date('d.m.Y / H:i:s', strtotime($this->get_attribute('updated_at')));
    }

    public function places()
    {
        return $this->has_many_and_belongs_to('place','place_user');
    }
}

感谢。

2 个答案:

答案 0 :(得分:2)

仍然,不使用get,第一种方法,但select方法正在运行:

Place::find(1)->users()->select(array('users.name', 'users.email'))->get();

答案 1 :(得分:0)

我觉得这会导致错误,因为您的地方和用户表格中的一个或两个列“name”/“email”不明确。

在解决方案中,您可以编写指定表的列:

Place::find(1)->users()->get(array('users.name','users.email'));