を返します。 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ではないと仮定していたからです。それは言われている、私は数日間固執していたと私はすべての異なる組み合わせですべてをテストしたように感じる。
何か助けていただければ幸いです。
情報テーブルには、Personテーブルより多くのIDがあります。人(写真、名前アドレス)なしで情報が存在することができます(ユーザー名と特権)。少し奇妙ですが、既存のソフトウェアに依存している既存のDBは、Webアプリケーションで機能を追加しようとしています。私は私の関係が正しいと信じています。実際のテーブル名は一見無作為な名前なので、読みやすくするために質問のPersonとInfoに変更しますが、私はそれをちょっと解説したかもしれません。 – vanamp
テーブルにFKがある場合、関係で 'belongsTo'メソッドを定義する必要があります。詳細については、[docs](https://laravel.com/docs/5.3/eloquent-relationships#one-to-one)をご覧ください。 –
はい、私の説明は間違っていますが、コードには正しい関係情報があります。情報hasOne – vanamp