gpt4 book ai didi

php - 无法从对象 laravel 中检索字段值

转载 作者:行者123 更新时间:2023-12-03 20:37:20 24 4
gpt4 key购买 nike

我正在尝试使用 Eloquent 关系从我的数据库中检索一些数据。尝试获取特定字段而不是完整对象时遇到问题。这是我的一些代码。

Controller :

    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

我也无法使用预先加载,因为我在我的关系中使用自定义外键。

最佳答案

您将 apps 定义为 hasMany 关系。这意味着 apps 将是实体的集合,而不是单个实体,因此是 Illuminate\Database\Eloquent\Collection 实例,因为 Laravel 使用此类来填充实体列表通过 Eloquent 。作为实体的集合,您不会在其上拥有 App 实体的任何属性。

代替 echo $host->app->id; 你可以

foreach($host->app as $app) {
echo $app->id;
}

关于php - 无法从对象 laravel 中检索字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18666292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com