为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 7 尝试获取非对象的属性“域”(查看:

Laravel 7 尝试获取非对象的属性“域”(查看:

PHP
慕森卡 2024-01-19 15:20:05
我有 2 个数组,是通过 2 个 SQL 查询创建的。我想将它们变成一个命名数组,然后完成数组合并,原因是它们有不同的信息并且命名不同,你会看到有2个数组变量$AddonDomainSelect和$PackageSelect。在 $cpanelAcounts 或 $AddonDomains 上执行 DD 时,我只得到其中 1 个结果,而不是数组中应有的许多结果。已尝试将其合并到同一数组中。但在我看来,当传递到那里时它是错误的。控制器    <?phpnamespace App\Http\Controllers\Manage;use App\Http\Controllers\Controller;use Illuminate\Http\Request;use Gufy;use App\Package;use App\AddonDomain;use App\User;class WebsiteManage extends Controller{    public function index(){      $userid = auth()->user()->client_id;            $AddonDomainSelect = AddonDomain::select('username', 'domain', 'server', 'addon_domain', 'doc_root')                           ->where('client_id', '=', $userid)                           ->get();       $AddonDomains = [];            foreach ($AddonDomainSelect as $AddonDomain) {          $AddonDomains = [          'username' => $AddonDomain['username'],           'server' => $AddonDomain['server'],          'domain' => $AddonDomain['addon_domain'],          'doc_root' => $AddonDomain['doc_root']        ];              }                                   $PackageSelect = Package::select('username', 'domain', 'serverhostname')                           ->where('client_id', '=', $userid)                           ->get();                   $cpanelAcounts = [];      foreach ($PackageSelect as $cpanelAccount) {              $cpanelAcounts = [ 'username' => $cpanelAccount['username'],           'server' => $cpanelAccount['serverhostname'],          'domain' => $cpanelAccount['domain'],          'doc_root' => '/'];              }                     $AllWebsites = array_merge($AddonDomains, $cpanelAcounts);                                     return view('manageweb.AllWebsites',[        'websites' => $AllWebsites,                ]);    }}我收到以下错误。尝试获取非对象的属性“域”(查看:/var/www/cp/resources/views/manageweb/AllWebsites.blade.php)在错误日志中突出显示“{{$website->domain}}”。感谢您的关注,希望您能发现我做错了什么。
查看完整描述

2 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

除了已经提到的使用数组值而不是对象属性的方法之外,您遇到的问题是在您正在合并的两个数组中


foreach ($PackageSelect as $cpanelAccount) {


        $cpanelAcounts = [ 'username' => $cpanelAccount['username'], 

          'server' => $cpanelAccount['serverhostname'],

          'domain' => $cpanelAccount['domain'],

          'doc_root' => '/'];


    }

这最终会产生 $cpanelAcounts 只是一个带有键的平面数组:“username”、“server”、“domain”和“doc_root”,因此当您使用“foreach”更深入地了解它时,您正在迭代这些键的值 - 它们都没有带有键“domain”的子数组,这就是错误,我认为您希望它是数组的数组,所以它必须是


$cpanelAcounts[] = [ 'username' => $cpanelAccount['username'], 

          'server' => $cpanelAccount['serverhostname'],

          'domain' => $cpanelAccount['domain'],

          'doc_root' => '/'];

或使用array_push()


查看完整回答
反对 回复 2024-01-19
?
ibeautiful

TA贡献1993条经验 获得超5个赞

在刀片文件中更改此设置


<td class="text-bold-500"> {{ $website['domain'] }}</td>

<td> {{ $website['username'] }}}</td>

<td class="text-bold-500"> {{ $website['serverhostname'] }}</td>


查看完整回答
反对 回复 2024-01-19
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信