Wat ik doe:
Ik open een file, sla dit op in de database zonder er iets mee te doen. Dan open ik die file en vergelijk ik of de file en de file_get_contents gelijk zijn, indien ja dan mag er niks gebeuren... Maar, het rare is:
Ik heb gekeken naar de verschillen en die zijn er niet... Mijn database table is een longtext, dit omdat je nooit weet hoe lang het bestand is en dat risico wil ik niet nemen. Ik gebruik het Laravel MVC 4.2
public function init()
{
$except = ['blocks', '.', '..', '.DS_Store'];
$scandir = scandir($this->dir);
//Loop trough the directory
foreach ($scandir as $key => $value) {
if (!in_array($value, $except) && is_file($this->dir . '/' . $value)) {
//Get the file
$file = file_get_contents($this->dir . '/' . $value);
//Data to search for
$data = ['filename' => $value, 'product_key' => $this->current_template];
//Run model query
$version = Version::where($data)->first();
return dump(strlen($version->content), strlen($file));
//If the version doesnt exist or the version content is not equal to the current version
if ($version == null || $version->content != $file) {
//Create a new version
Version::create($data + ['content' => $file]);
}
}
}
return $this->redirect('template.cms.version.index', ['message' => 'Initialized']);
}
En wat wordt opgeslagen in de database? De returnwaarde van dump()? Hoe luidt deze (de returnwaarde, en hoe ziet de definitie van dump() er uit)? Of gebeurt dit in Version::create()?
Tis volgens mij een kwestie van het kruimelpad volgen.
Stom stom stom... $model->first(); betekend natuurlijk: pak het EERSTE wat je tegenkomt... Mn database kwam dus andere data files eerst tegen... Een order_by->created_at en desc was genoeg, we keren daarmee de tabel natuurlijk om :)