Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从Laravel 6中雄辩的关系中返回单个列?_Php_Arrays_Laravel_Laravel 6 - Fatal编程技术网

Php 如何从Laravel 6中雄辩的关系中返回单个列?

Php 如何从Laravel 6中雄辩的关系中返回单个列?,php,arrays,laravel,laravel-6,Php,Arrays,Laravel,Laravel 6,我有一个模型“Post”,它有“id”、“name”、“content”和“status”列 我有一个“PostStatus”模型,它有“id”和“name”列 在Post.php上,我有以下内容: class Post extends Model { public function status() { return $this->belongsTo('App\PostStatus','status'); } } 在其他地方的控制器中,我有: P

我有一个模型“Post”,它有“id”、“name”、“content”和“status”列

我有一个“PostStatus”模型,它有“id”和“name”列

在Post.php上,我有以下内容:

class Post extends Model
{
    public function status()
    {
        return $this->belongsTo('App\PostStatus','status');
    }
}
在其他地方的控制器中,我有:

Post::with('status')->get()->toArray();
它返回一个数组,其中所有文章的列值为'id','name'作为'content','status'作为来自Post status表中相关行的数据数组。我想要实现的是“status”列只是PostStatus模型中“name”列的字符串值,而不是整行的数组。我已经尝试在Post模型中的status函数上使用->select,但它仍然以数组的形式返回值。我宁愿避免直接使用SQL来实现我的目标

总之,我希望控制器中的函数返回:

array(4) {
    ["id"]=>
    int(1)
    ["name"]=>
    string(12) "Post Example"
    ["content"]=>
    string(7) "Content"
    ["status"]=>
    string(6) "Active"
  }
而不是

array(4) {
    ["id"]=>
    int(1)
    ["name"]=>
    string(12) "Post Example"
    ["content"]=>
    string(7) "Content"
    ["status"]=>
    array(2) {
      ["id"]=>
      int(1)
      ["name"]=>
      string(6) "Active"
    }
  }

这并不是关系设计的真正目的,你可能会发现,你以后确实需要这种关系来做其他事情,所以凌驾于它之上可能不是最好的做法

您应该考虑使用一个访问器返回一个属性(例如,<代码> $POST-> StasuSuxNeX/COD>)。

类后扩展模型
{
//附加用于序列化的属性
$appends=['status_name'];
//获取名为“status\u name”的属性
公共函数getStatusNameAttribute()
{
返回$this->status->name???”;
}
公共职能地位()
{
返回$this->belongsTo('App\PostStatus','status');
}
}
注意:如果您打算这样做,那么在获取帖子时最好仍然使用
和('status')
,因为这将防止Laravel对每个标签运行单独的查询。您甚至可能希望在Post模型的引导方法中将其作为全局作用域应用,因此您不必每次都这样做。

这并不是关系设计的真正目的,你可能会发现,你以后确实需要这种关系来做其他事情,因此超越它可能不是最好的做法

您应该考虑使用一个访问器返回一个属性(例如,<代码> $POST-> StasuSuxNeX/COD>)。

类后扩展模型
{
//附加用于序列化的属性
$appends=['status_name'];
//获取名为“status\u name”的属性
公共函数getStatusNameAttribute()
{
返回$this->status->name???”;
}
公共职能地位()
{
返回$this->belongsTo('App\PostStatus','status');
}
}
注意:如果您打算这样做,那么在获取帖子时最好仍然使用
和('status')
,因为这将防止Laravel对每个标签运行单独的查询。您甚至可能希望在Post模型的引导方法中将其作为全局作用域应用,因此您不必每次都这样做。

不确定,但您可以在数组上使用count()并循环通过此。。试试这个,让我知道发生了什么不确定,但您可以在数组上使用count()并循环通过这个。。试试这个,让我知道会发生什么