Laravel RelationShip Выбор файлов не работает - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь получить свойства из отношений между таблицами, но кажется, что это не работает, я пробовал другое решение в Интернете, но все еще не работает, вот код ниже, который я называю:

<code>$data = Employer::with(['contratClient'=>function($query){$query->select("idcontrat");}])
                ->where("id_entre",1)
                ->get();
echo "<pre>";
dd($data[0]->contratClient);
echo "
";

Модель работодателя:

class Employer extends Model{
    protected $primaryKey = 'id_em';
    protected $table = 'employers';
    protected $guarded = array();

    public function contratClient(){
         return $this->hasMany("App\ContratClient","id_emp");
    }
 }

Модель ContratClient:

class ContratClient extends Model
{
     protected $primaryKey = 'idcontrat';
     protected $table = 'contratClients';

     public function employer(){
         return $this->belongsTo('App\Employer','id_em');
     }
}

вот результат:

enter image description here

если я что-то пропустил, пожалуйста, я в списке, все еще новичок в Laravel

спасибо

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Отношения моделей должны быть:

class Employer extends Model{
    protected $primaryKey = 'id_em';
    protected $table = 'employers';
    protected $guarded = array();

    public function contratClient(){
         return $this->hasMany("App\ContratClient","id_emp", "id_em");
    }
}

class ContratClient extends Model
{
     protected $primaryKey = 'idcontrat';
     protected $table = 'contratClients';

     public function employer(){
         return $this->belongsTo('App\Employer','id_emp', 'id_em');
     }
}

Чтобы проверить отношения, попробуйте сначала получить строки с этим:

$data = Employer::with('contratClient')->get();
0 голосов
/ 19 февраля 2019

Я думаю, что ваши первичные ключи - это не то, что требовал бы laravel.Например:

В таблице employers для laravel потребуется employer_id, но ваш первичный ключ - id_em.Пожалуйста, обновите ваши отношения следующим образом и проверьте еще раз:

class Employer extends Model{
    protected $primaryKey = 'id_em';
    protected $table = 'employers';
    protected $guarded = array();

    public function contratClient(){

         return $this->hasMany('App\ContratClient','foreign_key_in_this_table', 'idcontrat');
    }
 }

class ContratClient extends Model
{
     protected $primaryKey = 'idcontrat';
     protected $table = 'contratClients';

     public function employer(){

         return $this->belongsTo('App\Employer','foreign_key_in_this_table', 'id_em');
     }
}

Также просто проверяете, является ли это тип contratClients, и вы имели в виду contractClients?

...