【问题标题】:How to convert object of stdClass to array in Laravel如何在 Laravel 中将 stdClass 的对象转换为数组
【发布时间】:2017-09-07 21:34:55
【问题描述】:

尝试在 Laravel 中显示视图时出现下一个错误:

"不能使用 stdClass 类型的对象作为数组(查看: C:\xampp\htdocs\mysite\resources\views\cms\contactus.blade.php)"。

我的控制器:

public function contactus(){ 

    ContactUS::get_content(self::$data);
    return view('cms.contactus', self::$data); 

} 

我的模特:

class ContactUS extends Model
{

public $table = 'contactus';

public $fillable = ['name','email','message']; 

static public function get_content(&$data){ 


        $sql = "SELECT cu.*,name,email,message FROM contactus cu "
            . "ORDER BY cu.created_at DESC ";

        $data['contactusd'] = DB::select($sql); 

     }

} 

我的看法:

@extends ('cms.cms_master') 
@section('cms_content')
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
    <h1 class="page-header">Contact us form information</h1>
    @if($contactusd) 
    <br><br>
    <table class="table table-bordered">  
        <thead>
            <tr>  
                <th>Name</th> 
                <th>Email</th> 
                <th>Message</th> 
            </tr>
        </thead> 
        @foreach($contactusd as $item)  
        <tr>
            <td>{{ $item['name']}}</td> 
            <td>
                <ul>

                    <li> Email: {{ $item['email']}}, Massage: {{$item['message'] }}</li>
                    @endforeach
                </ul>
            </td> 
            <td>{{ $item[created_at]}}</td> 
        </tr>

    </table> 
    @else 
    <p style="font-size: 18px">No information...</p>
    @endif
</div> 

@endsection

【问题讨论】:

  • 嗯,你可以把它当作一个对象来代替($item-&gt;email),或者将它转换成一个数组@foreach($contactusd as (array)$item)
  • 不,他要的是 laravel,但是你应该更喜欢雄辩而不是原始查询。

标签: php laravel laravel-5 laravel-5.3 laravel-5.4


【解决方案1】:

要将对象转换为数组(这是您的问题),请使用 $array = (array) $object;

【讨论】:

    【解决方案2】:

    你的刀片文件中有很多错误

    @if($contactusd) 
        <br><br>
        <table class="table table-bordered">  
            <thead>
                <tr>  
                    <th>Name</th> 
                    <th>Email</th> 
                    <th>Message</th> 
                </tr>
            </thead> 
            @foreach($contactusd as $item)  
            <tr>
                <td>{{ $item->name }}</td> 
                <td>
                    <ul>
    
                        <li> Email: {{ $item->email}}, Massage: {{$item->message }}</li>
    
                    </ul>
                </td> 
                <td>{{ $item->created_at}}</td> 
            </tr>
            @endforeach
        </table> 
        @else 
        <p style="font-size: 18px">No information...</p>
        @endif
    

    $contactusd = ContactUS::get_content(self::$data)->toArray();
    return view('cms.contactus', $contactusd);
    

    【讨论】:

      【解决方案3】:

      试试这个..

      $sql = "SELECT cu.*,name,email,message FROM contactus cu "
                  . "ORDER BY cu.created_at DESC ";
      
      $data['contactusd'] = DB::select($sql)->get()->toArray();
      

      【讨论】:

        【解决方案4】:

        如果您获取的数据在 std 类中, 你可以在查看页面{{ $item-&gt;name }}中这样写

        如果您获取的数据属于 std 类, 你可以在查看页面{{$item['message']}}中这样写

        背面这样写

        $sql = "SELECT cu.*,name,email,message FROM contactus cu "
                    . "ORDER BY cu.created_at DESC ";
        
        $data['contactusd'] = DB::select($sql)->get()->toArray();
        

        【讨论】:

          【解决方案5】:

          这样使用

          $data = ContactUS::get_content(self::$data)->toArray();
          return view('cms.contactus', $data);
          

          【讨论】:

            猜你喜欢
            • 2018-08-09
            • 1970-01-01
            • 2013-10-29
            • 2011-11-08
            • 1970-01-01
            • 2016-03-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多