2011-01-13 13 views
5

¿Es esta línea legal PHP?

$this->mongo->($this->db)->$collection_name->insert($document_name); 

si $ this-> db es una constante con el nombre de db a usar.

Gracias

Respuesta

2

No, cuerdas (y por lo tanto su constante) debe ser envuelto entre paréntesis, así:

$this->mongo->{$this->db}->$collection_name->insert($document_name); 
9

Trate de usar llaves en lugar de paréntesis:

$this->mongo->{$this->db}->$collection_name->insert($document_name); 

o asignar $this->db a un var local y usando ese lugar:

$db_name = $this->db; 
$this->mongo->$db_name->$collection_name->insert($document_name); 
+0

responsabilidad: nunca he trabajado con MongoDB. (Algún día ...) – BoltClock

+0

¡genial! agregará como solución una vez que el desbordamiento de pila me lo permita. la opción dos es mal estilo. y MongoDB es increíble! – CamelCamelCamel

0

No, no se puede tener ->() -> donde tienes mongo -> ($ this-> db) -> $ coll ... Quizás estabas buscando

$this->mongo($this->db)->$collection_name->insert($document_name); 
1

$connection->db->collection es la abreviatura de:

$this->mongo->selectDB($this->db)->selectCollection($collection_name)->insert(...); 

que podría funcionar mejor en su caso . +1 para la respuesta de BoltClock, también, si desea seguir con el estilo $x->y->z.

0

Querías $this->mongo->selectDB($this->db)->$collection_name->insert($document_name)

Cuestiones relacionadas