当我运行时,在Laravel Tinker上:
>>> $customers = App\Customer::all();
我得到一个对象列表,例如:
=> Illuminate\Database\Eloquent\Collection {#811
all: [
App\Customer {#815
id: 3,
favorite: 6,
user: App\User {#232 ...11},
zip: 11221
}
...
]
我的问题是如何将user
值扩展到{#232 ...11}
?
答案 0 :(得分:0)
您需要遍历集合以使用用户属性。如果你想在Tinker中这样做:
foreach ($customers as $customer) {
echo $customer->user->name;
}
如果您只想查看数据结构,可以在Tinker中执行此操作:
$customers->first()->user
答案 1 :(得分:0)
首先你应该加载关系:
$customers = App\Customer::with('user')->get();
但我认为你这样做是因为你的输出上有可见的用户关系。
要获得客户的数组表示以及您应该使用的关系:
foreach ($customers as $customer)
{
dump($customer->toArray());
}
显然结果不会与您转储整个集合相同,但您将获得所有模型属性以及关系,我认为这就是您想要的。
答案 2 :(得分:0)
工匠的修补功能几乎完全基于psysh
请参阅:https://github.com/bobthecow/psysh/
psysh内部是一个称为dump的命令,dump是交响乐的var-dumper的一种实现,是一种较新的var_dump。
dump -h
显示:
用法:dump [--depth DEPTH] [-a | --all] [-]
参数:目标要转储的目标对象或基元。
选项:--depth要解析的深度。 (默认值:10)--all(-a)包括
私有和受保护的方法和属性。帮助:转储对象或基元。就像var_dump一样,但是
真棒。例如>>>转储$ _
>>> dump $ someVar
>>>转储$ stuff-> getAll()
对于使用参数--depth的我自己来说,深度不能满足我的目标,该目标也很大。因此我们看到psysh依赖于交响乐的var-dumper。
请参阅:https://github.com/symfony/var-dumper
还:https://symfony.com/doc/current/components/var_dumper.html
高级部分说明
dump()函数只是一个薄包装器,是一种更方便的方法 调用VarDumper :: dump()。您可以更改此行为 通过调用VarDumper :: setHandler($ callable)函数。调用dump() 然后将转发给$ callable。
通过添加处理程序,您可以自定义克隆程序,自卸程序和 脚轮...
克隆器用于创建任何PHP的中间表示形式 变量。它的输出是Symfony \ Component \ VarDumper \ Cloner \ Data 包装此表示形式的对象...
克隆器在创建表示形式时会应用限制,因此 只能代表克隆变量的子集。致电之前 cloneVar(),您可以配置以下限制:
setMaxItems() 配置将在最小嵌套深度之后克隆的最大项目数。使用广度优先的商品进行计数 算法,以便较低级别的项比深层的项具有更高的优先级 嵌套项。指定-1将消除限制。 setMinDepth() 配置最小树深度,我们可以在其中保证克隆所有项目。达到此深度后,仅setMaxItems项 将被克隆。默认值为1,与较早版本一致 Symfony版本。 setMaxString() 配置在剪切超长字符串之前将克隆的最大字符数。指定-1将消除限制。
请参阅:https://symfony.com/doc/current/components/var_dumper/advanced.html
所以我要做的是在应用程序中创建一个名为VarDumpFull的文件夹,然后将以下代码添加到文件/app/VarDumpFull/VarDumpFull.php中
<?php
namespace App\VarDumpFull;
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;
class VarDumpFull
{
public function __construct($var)
{
$cloner = new VarCloner();
$dumper = new CliDumper();
$cloner->setMaxItems(-1);
$cloner->setMaxString(-1);
$dumper->dump($cloner->cloneVar($var));
}
}
您可以像这样轻松地运行它:
new VarDumpFull($variable_to_be_dumped);
记住要运行以更新您的课程。
composer dump-autoload