2015-08-09 3 views
0

Nous pouvons créer des objets vides en PHP en utilisant e stdClass et nous pouvons ajouter des propriétés à elle comme ceci:Fusionner deux collections éloquentes en une seule propriété d'objet?

$data = new stdClass; 

$data->xyz = something; 

Mais comment pourrions-nous ajouter plus de choses à une propriété? Je veux dire quelque chose comme ceci:

$data->xyz += somethingElse; 

Est-ce possible? Ce que je veux faire est ceci: je dois obtenir quelques données d'une base de données et je voudrais stocker des disques de deux tables dans une propriété. Pour obtenir des données d'une table et le stocker dans une propriété que je fais ceci:

$data = new stdClass; 

    $data->gallery = \DB::table('RestaurantMenuOptions') 
     ->select('Name', 'Image') 
     ->get(); 

    $data->gallery2 = \DB::table('Promotions') 
     ->select('Name', 'Image') 
     ->get(); 

Ce que je voudrais est de les stocker dans une seule propriété gallery. Par la façon dont je l'utilise Laravel 5.

Modifier 1

Ce que je veux est de joindre les données appelées à partir de la table 'RestaurantMenuOptions' et 'Promotions' dans une propriété de $data. Je devine s'il est possible de joindre deux variables ou s'il est possible d'obtenir des données de deux tables indépendantes en utilisant Eloquent? Ce que je pensais jusqu'à maintenant est de convert the models to array puis de les rejoindre, mais comment puis-je convertir les tableaux joints en un modèle de sorte qu'il dans les vues?

Edit 2

je trouve qu'il est possible de fusionner des collections éloquentes, mais si les tables ont le même type de PK et il sont répétées dossiers avec la même PK, ils vont peut passer outre, je décide pour convertir les collections de tableaux les fusionner et leur accès comme eux comme ceci:

{{ $item['key'] }} 

Si quelqu'un a une meilleure façon de le faire, je vais aprécier.

Répondre

-1

Je pense qu'un meilleur moyen serait de faire une boucle for au lieu de le rendre un peu plus dynamique.

code:

class Data { 
    private $property, $property2; 

    public function __construct($property,$property2) { 
     $this->Property = $property; 
     $this->Property2 = $property2; 
    } 
} 

$dataArray = array(); 

$dataArray[] = new Data('Name',Image); 
$dataArray[] = new Data('Name',Image); 

print "<pre>"; 
print_r($dataArray); 
print "</pre>"; 

for ($i=0; $i < count($dataArray); $i++) { 
    // do something with the array of objects 
} 
+0

Cela devrait être un commentaire ... si vous pouvez faire un exemple de ce alors ce serait une réponse –

+0

Mise à jour avec un code afin que vous puissiez voir ce que je veux dire. S'il vous plaît supprimer la downvote si vous trouvez la réponse utile –

+0

Hmmm, je comprends ce que vous voulez dire, mais votre réponse signifie pour moi beaucoup de code pour le but, peut-être s'il serait possible de joindre deux variables en une, puis les affecter à une propriété, ce serait mieux ... –