2017-08-20 1 views
1

J'utilise Laravel 5.4 withe Laravel-datatables du pluginLaravel, erreur normale enregistrée, mais une seule erreur avec écran blanc

Je n'ai aucun problème avec le plugin débogueur et l'erreur du journal des larves normale, mais pour une raison quelconque, l'un des Bug montre pas du tout et l'affichage laraval page blanche sans erreur :(

Je crois que le code lié à mon Eloquent problème de navire relation le code de suivi d'erreur de page blanche produit

return Datatables::of(InvoiceProduct::where('purchasing_order_id', 1))->make(true); 

l'erreur ci-dessus seulement se produire si la base de données rs n'est pas vide.

Je également d'utiliser DB pour essayer obtenir le même résultat que suivre sans erreur et

return Datatables::of(DB::select('select * from invoice_products where purchasing_order_id = ' . $id))->make(true); 

je vraiment besoin de voir ce qui est l'erreur donc je peux le réparer vous :(

Répondre

0

utilisez la générateur de requêtes, cela ne norme chercher le résultat, vous aurez besoin de votre chaîne avec un appel ->get()

return Datatables::of(InvoiceProduct::where('purchasing_order_id', 1)->get())->make(true); 

cela va créer non seulement la requête mais aussi exec Je l'ai.

+0

Merci pour votre réponse, mais j'ai toujours eu la même erreur avec ou sans -> get(). Au début, lorsque la table InvoiceProducts est vide fonctionne correctement, mais après avoir ajouté un enregistrement, l'outil de développement Chrome renvoie erreur 500, mais rien dans Laravel Debuggar aussi lorsque j'essaie de rafraîchir après erreur, maintenant la page blanche apparaît –

0

Ce que vous devez faire est de regarder votre fichier journal d'erreurs. Ouvrez le répertoire storage/logs et vous trouverez la raison de l'erreur 500. Il peut s'agir par exemple d'un nom de colonne non valide, d'un modèle non importé ou d'autres raisons.

+0

chose, je ne trouve rien dans le stockage/logs :( Une note de plus lorsque je supprime "invoice_products" de "protected $ avec", dans le modèle purchase_order, le code recommence à travailler // Json venir avec invoice_products, client et devise // protected $ avec = ['invoice_products', 'customer', 'currency', 'company']; protected $ avec = ['client', 'devise', 'société']; –

+0

Donc si dans les outils de développement dans Chrome, vous voyez l'erreur 500, vous devriez voir là aussi o la réponse à la raison de ce qui ne va pas, non? –

+0

Nabialek Il a seulement dit que la réponse du serveur 500 erreur sans détail –

1

J'ai trouvé le problème avec mon code, mais je ne sais toujours pas pourquoi 500 erreur ne se connecte pas au stockage/journal, ne sais toujours pas pourquoi page blanche, et ne sais toujours pas comment résoudre ce problème.

Le problème est lorsque je supprime facture_produit dans protect $ avec tableau, l'erreur disparue.

Voici le code que je modifie.

//protected $with = ['invoice_products', 'customer', 'currency', 'company']; 
//Comment out above line, the below line is working 
protected $with = ['customer', 'currency', 'company']; 

Je crois que ma relation est mauvaise, mais ne trouve pas le problème,

Voici mon code pour "modèle purchasing_orders" modèle Eloquent, qui ont beaucoup de "invoice_products"

class PurchasingOrder extends Model 
{ 
    protected $table = 'purchasing_orders'; 
    protected $fillable = [ 
     'po_number', 'po_date', 
     'invoice_reference', 'customer_id', 'customer_po_number', 'agent', 
     'estimate_shipping_date', 'estimate_arrival_date', 'estimate_loading_date', 
     'ship_to','to_user_name', 
     'term', 'po_remark', 'worksheet_remark', 
     'company_id','currency_id', 
     'total_amount', 'total_quantity','total_net_weight','total_gross_weight','total_packed_cu_metric','total_pallets', 
    ]; 

//Json come with product_unit and supplier that associated with prdocut 
//protected $with = ['invoice_products', 'customer', 'currency', 'company']; 
protected $with = ['customer', 'currency', 'company']; 

/** 
* Get the invoice_product of invoice. 
*/ 
//One invoice has many invoice_product 
public function invoice_products() 
{ 
    return $this->hasMany('App\InvoiceProduct'); 
} 
/** 
* Get the customer of invoice. 
*/ 
//One invoice has only one customer 
public function customer() 
{ 
    return $this->belongsTo('App\Customer', 'customer_id'); 
} 
/** 
* Get the currency of invoice. 
*/ 
//One invoice has only one currency 
public function currency() 
{ 
    return $this->belongsTo('App\Currency', 'currency_id'); 
} 
/** 
* Get the company of invoice. 
*/ 
//One invoice has only one company 
public function company() 
{ 
    return $this->belongsTo('App\Company', 'company_id'); 
} 

Et voici mon code de "invoice_products" Modèle éloquent (appartenant à purchase_order Eloquent modèle)

class InvoiceProduct extends Model 
{ 
    protected $table = 'invoice_products'; 
    protected $fillable = [ 
     'product_id', 'customer_product_id','name', 'brand', 'packing', 
     'gross_weight', 'net_weight','net_weight_packing', 
     'product_unit_id', 'packed_cu_metric', 
     'quantity','price','amount','pallets', 
     'invoice_id', 'purchasing_order_id','container_id', 
    ]; 

//Json come with InvocieProduct add PurchasingOrder 
protected $with = ['purchasing_order', 'product', 'customer_product', 'container']; 


public function purchasing_order() 
{ 
    return $this->belongsTo('App\PurchasingOrder', 'purchasing_order_id'); 
} 

public function container() 
{ 
    return $this->belongsTo('App\Container'); 
} 
public function product() 
{ 
    return $this->belongsTo('App\Product', 'product_id'); 
} 
public function customer_product() 
{ 
    return $this->belongsTo('App\CustomerProduct', 'customer_product_id'); 
} 

}