首页 文章

Laravel hasOne不会触发任何sql请求

提问于
浏览
0

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

这是我的配置:

数据库:

表appartements:1 id int(10)2 address varchar(255)
3邮政编码int(11)4 city varchar(255)
5国家varchar(255)
6 created_at timestamp 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 timestamp 8 updated_at timestamp

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

所以基本上我有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-> lang() - > title时我什么都没得到 .

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

非常感谢 .

1 回答

  • 3

    当你使用 lang() 时,你实际上是返回部分构建的查询(所以你可以添加其他条件,等等 . )

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

    所以:

    $appartement->lang->title
    

    如果你 var_dump() 你会亲眼看到 .

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

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

相关问题