Ich habe diese Seite und eine ihrer Seiten erstellt eine einfache Liste von Personen aus der Datenbank. Ich muss einer Variablen, auf die ich zugreifen kann, eine bestimmte Person hinzufügen.
Wie ändere ich die return $view->with('persons', $persons);
Zeile, um auch die Variable $ ms an die Ansicht zu übergeben?
function view($view)
{
$ms = Person::where('name', 'Foo Bar');
$persons = Person::order_by('list_order', 'ASC')->get();
return $view->with('persons', $persons);
}
Das ist wie man es macht:
function view($view) { $ms = Person::where('name', '=', 'Foo Bar')->first(); $persons = Person::order_by('list_order', 'ASC')->get(); return $view->with('persons', $persons)->with('ms', $ms); }
Sie können auch compact () verwenden :
function view($view) { $ms = Person::where('name', '=', 'Foo Bar')->first(); $persons = Person::order_by('list_order', 'ASC')->get(); return $view->with(compact('persons', 'ms')); }
Oder machen Sie es in einer Zeile:
function view($view) { return $view ->with('ms', Person::where('name', '=', 'Foo Bar')->first()) ->with('persons', Person::order_by('list_order', 'ASC')->get()); }
Oder senden Sie es sogar als Array:
function view($view) { $ms = Person::where('name', '=', 'Foo Bar')->first(); $persons = Person::order_by('list_order', 'ASC')->get(); return $view->with('data', ['ms' => $ms, 'persons' => $persons])); }
In diesem Fall müssten Sie jedoch folgendermaßen darauf zugreifen:
{{ $data['ms'] }}
quelle
{{ $ms->name }}
bekomme ichUndefined property: Laravel\Database\Eloquent\Query::$name
Was fehlt mir?->first()
in der ersten Zeile Ihrer Methode.->first()
Raphael hinzuzufügen, über den kommentiert wurde.$ms = DB::first('select * from people where name = "Foo Bar"');
Person::where('name', '=', 'Foo Bar')->first()
. Bearbeitet.function view($view) { $ms = Person::where('name', '=', 'Foo Bar')->first(); $persons = Person::order_by('list_order', 'ASC')->get(); return View::make('users', compact('ms','persons')); }
quelle
Übergeben mehrerer Variablen an eine Laravel-Ansicht
//Passing variable to view using compact method $var1=value1; $var2=value2; $var3=value3; return view('viewName', compact('var1','var2','var3')); //Passing variable to view using with Method return view('viewName')->with(['var1'=>value1,'var2'=>value2,'var3'=>'value3']); //Passing variable to view using Associative Array return view('viewName', ['var1'=>value1,'var2'=>value2,'var3'=>value3]);
Lesen Sie hier, wie Sie Daten an Ansichten in Laravel übergeben
quelle
Ist auf ein ähnliches Problem gestoßen, aber wenn Sie nicht unbedingt eine Ansicht mit Ansichtsdatei zurückgeben möchten, können Sie Folgendes tun:
return $view->with(compact('myVar1', 'myVar2', ..... , 'myLastVar'));
quelle
Diese Antwort scheint zu sein
etwas hilfreich beim Deklarieren der großen Anzahl von Variablen in der Funktion
Laravel 5.7. *
Zum Beispiel
public function index() { $activePost = Post::where('status','=','active')->get()->count(); $inActivePost = Post::where('status','=','inactive')->get()->count(); $yesterdayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(-1))->get()->count(); $todayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(0))->get()->count(); return view('dashboard.index')->with('activePost',$activePost)->with('inActivePost',$inActivePost )->with('yesterdayPostActive',$yesterdayPostActive )->with('todayPostActive',$todayPostActive ); }
Wenn Sie die letzte Zeile der Retouren sehen, sieht sie nicht gut aus
Damit
public function index() { $activePost = Post::where('status','=','active')->get()->count(); $inActivePost = Post::where('status','=','inactive')->get()->count(); $yesterdayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(-1))->get()->count(); $todayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(0))->get()->count(); $viewShareVars = ['activePost','inActivePost','yesterdayPostActive','todayPostActive']; return view('dashboard.index',compact($viewShareVars)); }
Wie Sie sehen, werden alle Variablen als Array von deklariert
$viewShareVars
und in der Ansicht aufgerufenpublic function index() { $activePost = Post::where('status','=','active')->get()->count(); $inActivePost = Post::where('status','=','inactive')->get()->count(); $yesterdayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(-1))->get()->count(); $todayPostActive = Post::whereDate('created_at', Carbon::now()->addDay(0))->get()->count(); $viewShareVars = array_keys(get_defined_vars()); return view('dashboard.index',compact($viewShareVars)); }
Die native PHP-Funktion
get_defined_vars()
erhält alle definierten Variablen von der Funktionund
array_keys
greift nach den VariablennamenAus Ihrer Sicht können Sie also auf alle deklarierten Variablen innerhalb der Funktion zugreifen
wie
{{$todayPostActive}}
quelle
Bitte versuchen Sie dies,
$ms = Person::where('name', 'Foo Bar')->first(); $persons = Person::order_by('list_order', 'ASC')->get(); return View::make('viewname')->with(compact('persons','ms'));
quelle
$oblast = Oblast::all(); $category = Category::where('slug', $catName)->first(); $availableProjects = $category->availableProjects; return view('pages.business-area')->with(array('category'=>$category, 'availableProjects'=>$availableProjects, 'oblast'=>$oblast));
quelle
Versuchen Sie es, um mehrere Array-Daten vom Controller an die Anzeige zu übergeben. Es funktioniert. In diesem Beispiel übergebe ich Betreffdetails aus einer Tabelle und Betreffdetails enthalten die Kategorie-ID. Die Details wie Name, wenn die Kategorie-ID aus einer anderen Tabellenkategorie abgerufen wird.
$category = Category::all(); $category = Category::pluck('name', 'id'); $item = Subject::find($id); return View::make('subject.edit')->with(array('item'=>$item, 'category'=>$category));
quelle
with
Funktion undsingle
Parameter:$ms = Person::where('name', 'Foo Bar'); $persons = Person::order_by('list_order', 'ASC')->get(); return $view->with(compact('ms', 'persons'));
with
Funktion undarray
Parameter:$ms = Person::where('name', 'Foo Bar'); $persons = Person::order_by('list_order', 'ASC')->get(); $array = ['ms' => $ms, 'persons' => $persons]; return $view->with($array);
quelle
Es ist einfach :)
<link rel="icon" href="{{ asset('favicon.ico')}}" type="image/x-icon" />
quelle