2017-09-07 1 views
1

Je reçois l'erreur suivante lorsque vous essayez d'afficher une vue en Laravel:Comment convertir objet de stdClass à tableau dans Laravel

« ne peut pas utiliser l'objet de type stdClass sous forme de tableau (Voir: C: \ xampp \ htdocs \ mysite \ ressources \ vues \ cms \ contactus.blade.php) ".

Mon contrôleur:

public function contactus(){ 

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

} 

Mon modèle:

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); 

    } 

} 

Mon point de vue:

@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 
+1

Eh bien, vous pouvez l'utiliser comme un objet à la place ('$ item-> email'), ou le convertir en un tableau' @foreach ($ contactusd as (array) $ item) ' – aynber

+1

Possible duplicate of [ Comment convertir un objet en tableau?] (Https://stackoverflow.com/questions/2476876/how-do-i-convert-an-object-to-an-array) – aynber

+0

nah il demande laravel et cependant vous devriez préférer éloquent au lieu de Raw Queries. –

Répondre

0

vous avez beaucoup d'enfer d'erreur dans votre fichier lame

@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 

ou

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

Essayez cette ..

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

$data['contactusd'] = DB::select($sql)->get()->toArray(); 
0

utilisation comme celui-ci

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

Si vous l'obtention de données est en classe de std, vous pouvez écrire comme ceci dans la vue page {{ $item->name }}

Si vous l'obtention de données est en classe std, vous pouvez écrire comme ceci en page vue {{$item['message']}}

écriture arrière comme celui-ci

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

$data['contactusd'] = DB::select($sql)->get()->toArray(); 
1

Pour convertir un objet en tableau (comme votre question) utilisez $array = (array) $object;