雄弁な関係を使用して、DB からデータを取得しようとしています。オブジェクト全体ではなく特定のフィールドを取得しようとすると、問題が発生します。これが私のコードの一部です。
コントローラ:
public function getHosts($table = null)
{
foreach (Hosts::all() as $host)
{
echo $host->physical_machine_name;
echo $host->app->id;
}
}
モデル:
class Hosts extends Eloquent
{
protected $connection = 'mysql_2';
protected $table = 'hosts';
public $timestamps = false;
public function app(){
return $this->hasMany('Apps', 'os_instance_name')->orWhere('os_instance_name', $this->os_instance_name);
}
}
class Apps extends Eloquent
{
protected $connection = 'mysql_2';
protected $table = 'app_instances';
public $timestamps = false;
public function host()
{
return $this->belongsTo('Hosts','os_instance_name')->orWhere('os_instance_name', $this->os_instance_name);
}
}
表示するアプリの ID を取得できませんが、「->id」指定子を削除すると、すべてのフィールドを含む json オブジェクトを取得できます。なぜこうなった?
また、正常に動作することにも注意してください$host->physical_machine_name
。
これは私が受け取るエラーです:
Undefined property: Illuminate\Database\Eloquent\Collection::$id
リレーションシップでカスタム外部キーを使用しているため、熱心な読み込みも使用できません。