Laravel hasOne不会触发任何sql请求

时间:2014-02-15 19:43:45

标签: laravel laravel-4 has-one

我和Laravel有点问题。我对它很新,我正在尝试为我的一些内容创建一个multilang模型。

这是我的配置:

数据库:

表公寓:     1 id int(10)     2地址varchar(255)
    3邮政编码int(11)     4 city varchar(255)
    5国家varchar(255)
    6 created_at时间戳     7 updated_at timestamp

表appartement_langs     1 id int(10)
    2 language_id int(11)     3 appartement_id int(11)     4 title varchar(255)
    5副标题varchar(255)     6描述文字
    7 created_at时间戳     8 updated_at timestamp

表格语言         1 id int(10)
    2 locale varchar(255)
    3 created_at时间戳
    4 updated_at timestamp

所以基本上我有language_id和appartement_id。

在我的Appartement模型中,我有以下内容:

    <?php

    class Appartement extends Eloquent {
        protected $guarded = array();

        public static $rules = array();

        public function gallery()
        {
            return $this->hasMany('Gallery');
        }

        public function languages()
        {
            return $this->hasMany('AppartementLang', 'language_id');
        }

        public function lang()
        {
            return $this->hasOne('AppartementLang');
        }
    }

当我尝试获得字段$ appartement-&gt; lang() - &gt;标题时我什么都没得到。

你能给我一个暗示吗?因为我真的不知道如何处理这个:)。

非常感谢。

1 个答案:

答案 0 :(得分:3)

当您使用lang()时,实际上是在返回部分构建的查询(因此您可以添加其他条件等等。)

如果您想要检索语言模型,您只需使用lang

所以:

$appartement->lang->title

如果您var_dump() lang(),您将亲眼看到。

Laravel documentation中,您会看到他们的关系示例调用:

$phone = User::find(1)->phone;