使用Lavarel在ORM Eloquent Model中创建其他属性

时间:2016-11-27 18:56:26

标签: php eloquent

Languages表包含:     id*

Translations表包含:     language_id* | language | country | translate_code_id*

Locales表包含:     id* | code | name

(*是主键)

我希望我的语言模型直接将name(=语言)和country作为属性?

我成功为name创建了一个getter,但它看起来并不像#34;"去做吧。

这是我的模特:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Language extends Model {
    protected $table = 'languages';

    protected $primaryKey = 'id';

    function translations() {
        return $this->hasMany(LanguageTranslation::class, 'language_id');
    }

    function locale() {
        $locale = Locale::where('code', config('app.locale'))->first();
        return $this->translations()->where('translate_code_id', $locale->id);
    }

    function getName() {
        if ($locale = $this->locale->first())
            return $this->locale->first()->toArray()['language'];
    }

}

0 个答案:

没有答案