在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
}
...
]我的问题是如何在包含{#232 ...11}的位置扩展user值
发布于 2017-12-23 03:20:18
您需要遍历集合才能使用用户属性。如果你想在Tinker中做到这一点:
foreach ($customers as $customer) {
echo $customer->user->name;
}如果你只是想看看数据结构,你可以在Tinker中这样做:
$customers->first()->user发布于 2017-12-23 03:54:02
首先,你应该加载关系:
$customers = App\Customer::with('user')->get();但我假设你这样做是因为你的输出中有可见的用户关系。
要获得客户的数组表示以及关系,您应该使用:
foreach ($customers as $customer)
{
dump($customer->toArray());
}显然,result不会与您转储整个集合相同,但您将获得所有模型属性以及关系,我认为这就是您在这里想要的。
发布于 2020-10-24 02:32:53
工匠的修补工功能几乎完全基于心理。
请参阅:https://github.com/bobthecow/psysh/
在var_dump内部是一个叫做转储的命令,转储是symfony的var- dump的一个实现,是一种更新的转储。
dump -h显示:
用法:转储--深度--
参数: target要转储的目标对象或基元。
选项:--解析的深度。(默认值: 10) --所有(-a)包括
私有和受保护的方法和属性。
帮助:转储对象或基元。这就像var_dump,但是方式
太棒了。e.g.
dump $_
转储$someVar
转储$stuff->getAll()
对于我自己来说,运行参数--深度并不能满足我的对象,它也相当大。因此,我们可以看到dumper依赖于symfony的var-dumper。
请参阅:https://github.com/symfony/var-dumper
还有:https://symfony.com/doc/current/components/var_dumper.html
高级部分说明
()函数只是一个很薄的包装器,是调用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
所以我要做的是在app内创建一个名为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-autoloadhttps://stackoverflow.com/questions/47946356
复制相似问题