Sembra che "List" sia una determinata parola chiave per Laravel (o PHP stesso, non ne sono sicuro .. Sono nuovo di Laravel).
Ho una tabella nel mio database chiamata lists
. All'interno di quel tavolo c'è un field chiamato title
. Inoltre, una tabella chiamata tasks
, con una colonna list_id
che fa riferimento alla colonna id
dagli lists
, quindi quello che sto facendo per ora è:
app / templates / MyAppList.php
class MyAppList extends Eloquent { protected $table = 'lists'; public function tasks() { return $this->hasMany('Task', 'list_id'); } }
app / templates / Task.php
class Task extends Eloquent { public function myapplist() { return $this->belongsTo('MyAppList'); } }
app / routes.php
Route::get('/', function() { $v = Task::find(1); dd($v->myapplist()->lists('title')); });
Questo produce il titolo della list che possiede quell'attività proprio bene.
Pensavo che il namespace del model avrebbe funzionato. Il file sarebbe List.php
, la class sarebbe List
, all'interno del namespace MyApp;
del file namespace MyApp;
e poi:
app / routes.php
Route::get('/', function() { $lists = MyApp\List::all()->lists('title'); dd($lists); });
Ma non funziona.
Per maggiore chiarezza, se lascio la parola "Elenco" come nome del file e della class e poi provo:
app / routes.php
Route::get('/', function() { $lists = List::all()->lists('title'); dd($lists); });
Ottengo:
Symfony \ Component \ Debug \ Exception \ FatalErrorException syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM), expecting '('
Se trovo il namespace nella class List
:
Route::get('/', function() { $lists = Mdl\List::all()->lists('title'); dd($lists); });
Ottengo:
Symfony \ Component \ Debug \ Exception \ FatalErrorException syntax error, unexpected 'List' (T_LIST), expecting identifier (T_STRING)
La soluzione migliore consiste nell'utilizzare il nome del model di class Eloquent diverso da List come elenco è una parola chiave riservata in PHP.