Красноречивые отношения hasOne возвращают ноль - PullRequest
0 голосов
/ 02 июня 2018

У меня есть 2 модели Admin и подписка

Модель Admin.php

public function subscription() {
    return $this->hasOne('App\Subscription','admin_id','id'); 
}

Модель Subscription.php

public function payer() {
     return $this->belongsTo('App\Admin','admin_id','id');
}

Когда я пытаюсь получить плательщикаподписка возвращает ноль.Я получаю плательщика вот так.

В Controller.php

$subscriptions=Subscription::all();

foreach ($subscriptions as $subscription) {
    dd($subscription->payer);
}

Пожалуйста, дайте мне решение.Я попытался изменить все, что до сих пор не работает.

Это мои миграции

Таблица подписок

id  int(10) unsigned Auto Increment  
subscription_type   varchar(191) NULL    
expiry_date timestamp NULL   
status  varchar(191) [required]      
admin_id    varchar(191)     
created_at  timestamp NULL   
updated_at  timestamp NULL

Таблица администратора

id  int(10) unsigned Auto Increment  
name    varchar(191)     
email   varchar(191)     
password    varchar(191)     
remember_token  varchar(100) NULL    
created_at  timestamp NULL   
updated_at  timestamp NULL

1 Ответ

0 голосов
/ 02 июня 2018

Я не уверен, так как вы не показали свои файлы миграции, но я думаю, что вы, возможно, устанавливаете отношение неправильно, вы указываете тот же самый посторонний.Также, если первичный ключ назван «id», вам не нужно указывать его.Поэтому, возможно, это сработает:

Модель администратора

public function subscription()
{
  // asumes foreign key is called admin_id
  return $this->hasOne('App\Subscription');
}

Модель подписки

public function payer()
{
  // asumes foreign key is called subscription_id
  return $this->belongsTo('App\Admin');
}

Обновление, если ваши таблицы названы так, как вы предлагаете, вам не нужно указывать какой-либо ключ, потому что вы соблюдаете соглашения об именах по умолчанию.

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