Laravel красноречивое отношение один ко многим - PullRequest
0 голосов
/ 17 мая 2018

Я не могу понять, как определить отношение один ко многим, используя Eloquent.

Вот таблицы

----------- Country -----------
id | title | code | currency_code

----------- Currency Code --------
id | name | symbol | code 

В одной стране может быть много валют.

Поэтому я определил свои модели следующим образом

class Country extends Model
{
    public function currencies()
    {
        $this->hasMany('App\Models\Currency', 'code', 'currency_code');
    }

}

И модель валюты проста

class Currency extends Model
{


}

И я выбираю такие страны

   return Country::all('country_id AS value', 'title_ru AS title','currency_code')
   ->sortBy('value');

Но он возвращает ноль, когда я пытаюсь получить доступ к валютам

Что не так с моими определениями, я был бы признателен за любую помощь.

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы можете установить свою модель следующим кодом:

Модель страны:

class Country extends Model
{
    protected $table = 'country';
    protected $primaryKey = 'id';

    public function currency(){
        return $this->hasMany(App\Models\Currency', 'code', 'currency_code');
    }

}

Модель валюты:

class Currency extends Model
{
    protected $table = 'currency';
    protected $primaryKey = 'id';

    public function country(){
        return $this->belongTo('App\Models\Country', 'code');
    }

}

И затем, если вы хотите получить данные конкретной страны (с валютой), вы можете использовать это:

$data = County::where('id','=',$id)->with('currency')->first();

Или, если вы хотите получить все, что можете использовать:

$data = County::with('currency')->get();
0 голосов
/ 17 мая 2018

Вы должны попробовать это:

Модель страны

class Country extends Model
{
    public function currencies()
    {
        $this->belongsTo('App\Models\Currency', 'currency_code');
    }

}

Модель валюты

class Currency extends Model
{
    public function country()
    {
        $this->belongsTo('App\Models\Country');
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...