Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Laravel: Eloquent, problema sacando datos de tablas relacionadas

Estas en el tema de Laravel: Eloquent, problema sacando datos de tablas relacionadas en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, soy nuevo en el foro. Estoy aprendiendo PHP + Laravel. Tengo un problema al sacar datos de la base de datos. Lo que quiero ...
  #1 (permalink)  
Antiguo 03/07/2013, 15:56
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 2
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta Laravel: Eloquent, problema sacando datos de tablas relacionadas

Hola, soy nuevo en el foro. Estoy aprendiendo PHP + Laravel.
Tengo un problema al sacar datos de la base de datos. Lo que quiero hacer es sacar la lista completa de la base de datos, y filtrarla con eloquent.

Código PHP:
//UsersController.php
<?php

class UsersController extends BaseController {

    public function 
index()
    {
        if (
Auth::user() && Auth::user()->role == 'customer') {
            
$downloads Download::all();
            
            return 
View::make('downloads.index')->with('downloads'$downloads);
        }
        return 
View::make('login');
    }
Código PHP:
//Add.php
<?php

class Add extends Eloquent {
    protected 
$guarded = array();

    public static 
$rules = array();

    public function 
download(){
        return 
$this->belongsTo('Download');
    }
}
Código PHP:
//Download.php
<?php

class Download extends Eloquent {
    protected 
$guarded = array();

    public static 
$rules = array();

    public function 
adds(){
        return 
$this->hasMany('Add''user_id''did_id''created_at''updated_at');
    }
}
Aquí es donde no sé como sacar con un foreach los datos:
Código PHP:
//index.blade.php

@extends('master')
@section('content')
    @if(Auth::check())
        <?php     /*
                $download->adds()->first()->did_id
                $download->did == Add::where('did_id', '=', $download->did)->lists('did_id')[0]
                */
        
?>

        <?php $newdatetime = new DateTime(); ?>
        <?php echo "<p>".$newdatetime->format('Y-m-d H:i:s')."<p>"?>
        @foreach($downloads as $download)

            //en este if también quiero hacer algo como
            //$download->adds()->first()->created_at > $newdatetime->format('Y-m-d H:i:s')
            //$download->adds()->first()->updated_at < $newdatetime->format('Y-m-d H:i:s')
            //ya que quisiera colocar un límite de descarga de 2 semanas

            //devuelve "Trying to get property of non-object"
            @if($download->did == $download->adds()->first()->did_id)
            {{ $download->did }}    Descarga <br>
            @else
            {{ $download->did }}    NO Descarga <br>
            @endif
        @endforeach
    @endif
    <hr>
@stop
Habrá otra manera de hacer esto? en el modelo? controlador?
Espero puedan ayudarme, gracias a todos.
  #2 (permalink)  
Antiguo 04/07/2013, 18:48
 
Fecha de Ingreso: febrero-2006
Mensajes: 60
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Laravel: Eloquent, problema sacando datos de tablas relacionadas

Haz un simple $downloads->count() y ve si efectivamente está devolviendo algo. De igual forma en tu modelo debes definir el nombre de la tabla con la que estás trabajando si no es el mismo que tienes en la DB en forma plural.

http://four.laravel.com/docs/eloquent#basic-usage
__________________
Negro Blanco
  #3 (permalink)  
Antiguo 04/07/2013, 21:14
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 2
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Laravel: Eloquent, problema sacando datos de tablas relacionadas

Hola @ZyZtemA gracias por responder. El problema no es la DB, ya que si recibo datos, creo que me expliqué mal :)
Lo que quiero hacer es filtrar los datos de dos tablas de la DB con un if dentro de un foreach como lo muestro en el código.

Espero me ayuden, Saludos!

Etiquetas: control, controlador, php, relacionadas, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:37.