E 'piuttosto semplice in quanto è la cosa più semplice, ma non so che cosa mi manca:laravel Eloquente :: Find() restituire NULL con un ID esistente
Avere un modello chiamato Site
sto utilizzando Eloquente ORM, così quando chiamo (in un controllore)
$oSite = Site::find(1)
e poi
var_dump($oSite);
Restituisce il valore NULL
.
Ma quando controllo il database, i 'siti' tabella contiene in realtà la seguente voce:
id: 1
user_id: 1
name: test
Nel mio modelloSite
ho il seguente codice:
use Illuminate\Database\Eloquent\ModelNotFoundException;
Class Site extends Eloquent {
protected $table = 'sites';
protected $fillable = array ('user_id', 'name');
}
Invece, se raccolgo l'articolo con il seguente:
$oSite = DB::table('sites')
->where('id', 1)
->first();
Funziona e ottengo il registro corretto.
Cosa sto facendo male? Quale parte della documentantion non ho avuto?
EDIT:
Codice modello può essere controllato in precedenza.
controller:
use Illuminate\Support\Facades\Redirect;
class SiteManagementController extends BaseController {
...
public function deleteSite()
{
if (Request::ajax())
{
$iSiteToDelete = Input::get('siteId');
$oSite = Site::find($iSiteToDelete);
return var_dump($oSite);
}
else
{
return false;
}
}
}
EDIT 2: (RISOLTO)
vero motivo per cui non funzionava:
ho avuto originariamente nel mio codice del modello il seguente:
Problema: ho aggiunto una colonna "deleted_at
" dopo l'avvio del progetto e quando ho applicato le migrazioni, non avevo abilitato il softdeleting. Ovviamente, ho fatto un secondo errore, dimenticando di abilitare 'deleted_at
' come annullabile, quindi tutti gli inserimenti hanno avuto un timestamp errato (0000-00-00 ...).
Fix:
'
deleted_at
' colonna made annullabile.Impostare tutti i timestamp '
deleted_at
' suNULL
.
Mostra il modello e il metodo di controllo, invece. –
@JarekTkaczyk ha modificato il post e ha aggiunto il metodo Contoller. Modello 'Sito' è sopra. – zedee
@JarekTkaczyk risolto da solo. La fonte del problema era correlata al DB. – zedee