2016-04-24 8 views
0

ich das Bild vonLaravel und Klinge Fehler immer noch nicht gelöst

<img src="{!!DB::table('users')->where('username',$game->initiator)->first()->photo_path!!}" alt="" /> 

aber bekomme ich nur zeigen wollte einen Fehler

Trying to get property of non-object 

habe ich versucht, alle Methoden wie das Entfernen Klammern, Zitate und unter Verwendung von Html::image wurde jedoch keine Heilung gefunden.

Aber wenn ich meinen Code

{!!dd(DB::table('users')->where('username',$game->initiator)->first()->photo_path)!!} 

oder

{{dd(DB::table('users')->where('username',$game->initiator)->first()->photo_path)}} 

ich eine URL von Gravatar ändern, die in der Datenbank festgelegt ist und diese URL hat doppelte Anführungszeichen wie: - "http://www.gravatar.com/avatar/5478144dd02f370affc2ad70f22af697?s=200&r=pg&d=identicon"

was bedeutet, dass die Verbindung in der Datenbank existiert, aber warum Fehler angezeigt wird. Ich versuchte

<img src="{!!url(DB::table('users')->where('username',$game->initiator)->first()->photo_path)!!}" alt="" /> 

aber auch dies nicht für mich zu arbeiten.

Auch wenn ich gerade $game->initiator durch einen Benutzernamen ersetzen, dann wird Bild korrekt angezeigt. Diejenigen, die denken, die Variable $game->initiator ist leer, dann sind sie falsch, ich habe dd() Funktion verwendet, um zu sehen, ob es leer ist oder nicht und dann fand ich, dass es eine Benutzerdetails enthält.

Ich kann diese Sache in der Steuerung nicht tun, weil ich mehr als 1000 Spiele habe und alle einen Initiator und einen Akzeptor haben, deren Bilder angezeigt werden sollen.

EDIT: Wenn ich {{dd($game)}} nach dem Bild hinzufügen, dann funktionierte es und unterdrückt den Fehler aber der Fehler ist immer noch ansichts der Lage, von der Quelle des HTML Es sieht aus wie

<script> Sfdump = window.Sfdump || (function (doc) { var refStyle = doc.createElement('style'), rxEsc = /([.*+?^${}()|\[\]\/\\])/g, idRx = /\bsf-dump-\d+-ref[012]\w+\b/, keyHint = 0 <= navigator.platform.toUpperCase().indexOf('MAC') ? 'Cmd' : 'Ctrl', addEventListener = function (e, n, cb) { e.addEventListener(n, cb, false); }; (doc.documentElement.firstElementChild || doc.documentElement.children[0]).appendChild(refStyle); if (!doc.addEventListener) { addEventListener = function (element, eventName, callback) { element.attachEvent('on' + eventName, function (e) { e.preventDefault = function() {e.returnValue = false;}; e.target = e.srcElement; callback(e); }); }; } function toggle(a, recursive) { var s = a.nextSibling || {}, oldClass = s.className, arrow, newClass; if ('sf-dump-compact' == oldClass) { arrow = '&#9660;'; newClass = 'sf-dump-expanded'; } else if ('sf-dump-expanded' == oldClass) { arrow = '&#9654;'; newClass = 'sf-dump-compact'; } else { return false; } a.lastChild.innerHTML = arrow; s.className = newClass; if (recursive) { try { a = s.querySelectorAll('.'+oldClass); for (s = 0; s < a.length; ++s) { if (a[s].className !== newClass) { a[s].className = newClass; a[s].previousSibling.lastChild.innerHTML = arrow; } } } catch (e) { } } return true; }; return function (root) { root = doc.getElementById(root); function a(e, f) { addEventListener(root, e, function (e) { if ('A' == e.target.tagName) { f(e.target, e); } else if ('A' == e.target.parentNode.tagName) { f(e.target.parentNode, e); } }); }; function isCtrlKey(e) { return e.ctrlKey || e.metaKey; } addEventListener(root, 'mouseover', function (e) { if ('' != refStyle.innerHTML) { refStyle.innerHTML = ''; } }); a('mouseover', function (a) { if (a = idRx.exec(a.className)) { try { refStyle.innerHTML = 'pre.sf-dump .'+a[0]+'{background-color: #B729D9; color: #FFF !important; border-radius: 2px}'; } catch (e) { } } }); a('click', function (a, e) { if (/\bsf-dump-toggle\b/.test(a.className)) { e.preventDefault(); if (!toggle(a, isCtrlKey(e))) { var r = doc.getElementById(a.getAttribute('href').substr(1)), s = r.previousSibling, f = r.parentNode, t = a.parentNode; t.replaceChild(r, a); f.replaceChild(a, s); t.insertBefore(s, r); f = f.firstChild.nodeValue.match(indentRx); t = t.firstChild.nodeValue.match(indentRx); if (f && t && f[0] !== t[0]) { r.innerHTML = r.innerHTML.replace(new RegExp('^'+f[0].replace(rxEsc, '\\$1'), 'mg'), t[0]); } if ('sf-dump-compact' == r.className) { toggle(s, isCtrlKey(e)); } } if (doc.getSelection) { try { doc.getSelection().removeAllRanges(); } catch (e) { doc.getSelection().empty(); } } else { doc.selection.empty(); } } }); var indentRx = new RegExp('^('+(root.getAttribute('data-indent-pad') || ' ').replace(rxEsc, '\\$1')+')+', 'm'), elt = root.getElementsByTagName('A'), len = elt.length, i = 0, t = []; while (i < len) t.push(elt[i++]); elt = root.getElementsByTagName('SAMP'); len = elt.length; i = 0; while (i < len) t.push(elt[i++]); root = t; len = t.length; i = t = 0; while (i < len) { elt = root[i]; if ("SAMP" == elt.tagName) { elt.className = "sf-dump-expanded"; a = elt.previousSibling || {}; if ('A' != a.tagName) { a = doc.createElement('A'); a.className = 'sf-dump-ref'; elt.parentNode.insertBefore(a, elt); } else { a.innerHTML += ' '; } a.title = (a.title ? a.title+'\n[' : '[')+keyHint+'+click] Expand all children'; a.innerHTML += '<span>&#9660;</span>'; a.className += ' sf-dump-toggle'; if ('sf-dump' != elt.parentNode.className) { toggle(a); } } else if ("sf-dump-ref" == elt.className && (a = elt.getAttribute('href'))) { a = a.substr(1); elt.className += ' '+a; if (/[\[{]$/.test(elt.previousSibling.nodeValue)) { a = a != elt.nextSibling.id && doc.getElementById(a); try { t = a.nextSibling; elt.appendChild(a); t.parentNode.insertBefore(a, t); if (/^[@#]/.test(elt.innerHTML)) { elt.innerHTML += ' <span>&#9654;</span>'; } else { elt.innerHTML = '<span>&#9654;</span>'; elt.className = 'sf-dump-ref'; } elt.className += ' sf-dump-toggle'; } catch (e) { if ('&' == elt.innerHTML.charAt(0)) { elt.innerHTML = '&hellip;'; elt.className = 'sf-dump-ref'; } } } } ++i; } }; })(document); </script> 
+1

Der Fehler ist nicht in dieser Zeile, aber irgendwo anders in Ihrer Ansicht, überprüfen Sie den Stacktrace und erhalten Sie die Zeilennummer. –

Antwort

1

Die Fehlermeldung erzählt wird Sie genau was falsch ist: Sie versuchen, eine Eigenschaft von Nicht-Objekt zu bekommen.

Weil Sie Methode-Chaining sind (DB::table('users')->where('username',$game->initiator)->first()->photo_path) es ist schwer zu sehen, genau, wo das Problem ist, so dass Sie durch die einzelnen Methodenaufruf Schritt müssen und finden Sie heraus, wo es versagt (es null zurückkehren werde, anstatt ein Objekt).

Also in Ihrem Code, beginnen durch die Methoden treten ...

dd(DB::table('users')); 
dd(DB::table('users')->where('username', $game->initiator)); 

... und so weiter, bis Sie herausfinden, welche Methode null eher als ein Objekt zurückgibt.

+1

Wenn ich 'dd' benutze, tritt kein Fehler auf, aber wenn' 'dd'' nicht verwendet wird, tritt der Fehler auf und ich kann'dd' in der Bildquelle nicht verwenden –

+0

Wenn ich einfach '{{dd (DB :: table (' users ') - > where ('username', $ game-> initiator) -> first() -> fotopfad)}} 'Ich bekomme keinen Fehler –

0

Fassaden sollen im globalen Namensraum leben. Versuchen Sie zu verwenden:

{{ \DB::table('users')->where('username', $game->initiator)->first()->photo_path }} 

Wenn nicht, wird Ihr Alias ​​nicht korrekt registriert. Überprüfen Sie config/app.php>aliases und stellen Sie sicher, dass DB dort aufgeführt ist.

+0

Ich habe meine config/app.php überprüft und gefunden, dass die DB dort aufgelistet ist und ein' \ 'doesn benutzt 't help too –

+0

und wenn 'DB' nicht in Aliasen aufgeführt ist, wie würde der dd-Befehl funktionieren, der die Abfrage enthält? –

0

Das eigentliche Problem entstand, weil ich einige Änderungen in der Benutzertabelle vorgenommen habe. Ich ändere den Datentyp balance von string zu bigint und nach dieser Änderung erhielt ich die oben genannten Fehler.

Sie sollten auch überprüfen, ob Ihnen das passiert ist.

Lösung: Sie sollten die Spalte aus der Migrationsdatei ändern oder eine andere Datenbank erstellen oder die Werte in dieser Tabelle ausgeben.

In meinem Fall habe ich die Datenbank geändert.

0

Ich hatte ähnliches Problem. mit DB erhalten Sie Zugriff auf einen Datensatz in der Datenbank, aber es ist keine Instanz eines Modells. Versuchen Sie, auf die Daten mit einem Modell zuzugreifen. Verwenden Sie in diesem Fall einfach \App\User::where(.... und prüfen Sie, ob der Fehler auftritt.

+0

Das hat bei mir nicht funktioniert ..... –