2016-12-17 13 views
0

を返します。 Laravel雄弁モデルの関係が機能していない5.3、私はLaravelに新しいですし、これに苦しんでいNULL

モデル/表の設定

(これが問題であるかどうかわからない): INFO_ALL表 - IDは、主キー PERSON表である - IDはforiegnキー

IDが進値ですされており、私は説得力が削除さに気づきます値の先頭から0xであり、関係が失敗するかどうかはわかりません。例:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Person extends Model 
{ 
protected $table = 'PERSON'; 
protected $primaryKey = 'ID'; 
public $incrementing = false; 
public $timestamps = false; 

    public function info_all(){ 

     return $this->belongsTo(Info_All::class, 'ID', 'ID'); 
     } 
} 

情報モデル:

:私は関係をテストしていどの

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Info_All extends Model 
{ 
protected $table = 'INFO_ALL'; 
protected $primaryKey = 'ID'; 
public $incrementing = false; 
public $timestamps = false; 

    public function person(){ 

     return $this->hasOne(Person::class, 'ID', 'ID'); 

    } 
} 

私は返さ雄弁データに0x123456789を参照してくださいDBに私は123456789

人のモデルを見ます

php artisan tinker 
$person = App\Person::first(); 
$person->info; 
NULL 

php artisan tinker 
$info= App\Info::first(); 
$info->person; 
NULL 

私はこの関係がDBに存在することを知っています。私はそれらを一緒に手に入れることができますiというクエリではなく、このフレームワークのリレーションシップ機能が本当にうまくいきます。

私は$ primaryKeyを宣言しているので、realationshipの第3引数が必要であるかのように私は確信していないいくつかのことがあります。最初のモデルで$ primarykeyを宣言しました。これは、大文字と小文字が区別され、テーブルのIDがidではないと仮定していたからです。それは言われている、私は数日間固執していたと私はすべての異なる組み合わせですべてをテストしたように感じる。

何か助けていただければ幸いです。

答えて

0

リレーションが正しく定義されていません。次の関係追加して試してみてください。

人モデルを

public function info() 
{ 
    return $this->hasOne(Info_All::class, 'ID', 'ID'); 
} 

INFO_ALLモデル次に

public function person() 
{ 
    return $this->belongsTo(Person::class, 'ID', 'ID'); 
} 

いじくりでそれを試してみる:

$person = App\Person::first(); 
$person->info; 

を私はわからないが、雄弁削除すると値の先頭から0xを入力すると、問題が発生することもあります。

テーブルから0xを削除してみてください。

+0

情報テーブルには、Personテーブルより多くのIDがあります。人(写真、名前アドレス)なしで情報が存在することができます(ユーザー名と特権)。少し奇妙ですが、既存のソフトウェアに依存している既存のDBは、Webアプリケーションで機能を追加しようとしています。私は私の関係が正しいと信じています。実際のテーブル名は一見無作為な名前なので、読みやすくするために質問のPersonとInfoに変更しますが、私はそれをちょっと解説したかもしれません。 – vanamp

+0

テーブルにFKがある場合、関係で 'belongsTo'メソッドを定義する必要があります。詳細については、[docs](https://laravel.com/docs/5.3/eloquent-relationships#one-to-one)をご覧ください。 –

+0

はい、私の説明は間違っていますが、コードには正しい関係情報があります。情報hasOne – vanamp

関連する問題