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

我有 2 个数组,是通过 2 个 SQL 查询创建的。

我想将它们变成一个命名数组,然后完成数组合并,原因是它们有不同的信息并且命名不同,你会看到有2个数组变量$AddonDomainSelect和$PackageSelect。

在 $cpanelAcounts 或 $AddonDomains 上执行 DD 时,我只得到其中 1 个结果,而不是数组中应有的许多结果。

已尝试将其合并到同一数组中。但在我看来,当传递到那里时它是错误的。

控制器

    <?php


namespace 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}}”。

感谢您的关注,希望您能发现我做错了什么。


慕森卡
浏览 90回答 2
2回答

翻翻过去那场雪

除了已经提到的使用数组值而不是对象属性的方法之外,您遇到的问题是在您正在合并的两个数组中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()

ibeautiful

在刀片文件中更改此设置<td class="text-bold-500"> {{ $website['domain'] }}</td><td> {{ $website['username'] }}}</td><td class="text-bold-500"> {{ $website['serverhostname'] }}</td>
打开App,查看更多内容
随时随地看视频慕课网APP