Hi there,
Ben al de hele middag aan het strugglen om m'n data als een array door te geven aan m'n eloquent model.
Ik heb redelijke laravel 5 ervaring en heb eerder met mass assignement gewerkt maar kom er nu even niet uit, er gaat iets goed mis.
Je eerste gedachte is waarschijnlijk dat ik de fillables vergeten ben, maar dat is niet zo en dat is ook niet wat de Exception suggereert.
Ik krijg de volgende Exception:
Dezelfde exception treedt op bij create(), newOrCreate() etc. De Exception duidt erop dat hij het niet leuk vindt om null in te vullen bij "email", wat weer komt door m'n migration en ook correct is. Gezien mijn (debug)code is het echter vrij vreemd dat hij denkt null te moeten inserten:Code:QueryException in Connection.php line 620: SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: price_alerts.email (SQL: insert into "price_alerts" ("updated_at", "created_at") values (2015-06-09 17:56:30, 2015-06-09 17:56:30))
Tijdens het verder debuggen ben ik er achter gekomen dat mijn $attributes array 1x als null en 1x als array wordt gereturned door de (Model) methode fillableFromArray(array $attributes), die wordt aangeroepen door de fill methode. Onderstaande debug screenshot ter verduidelijking.PHP Code:
$priceAlert = new PriceAlert; $priceAlert ->fill([ 'email' => 'ricotestemail@email.com', 'product_title' => 'testproduct', 'product_id' => 10, 'price'=>5 ])->save();
Om het verhaal nog vreemder te maken werkt het wel als ik de attributen 1 voor 1 set. Dus via:PHP Code:
public function fill(array $attributes) { $totallyGuarded = $this->totallyGuarded();
foreach ($this->fillableFromArray($attributes) as $key => $value) { $key = $this->removeTableFromKey($key);
// The developers may choose to place some attributes in the "fillable" // array, which means only those attributes may be set through mass // assignment to the model, and all others will just be ignored. if ($this->isFillable($key)) { $this->setAttribute($key, $value); } elseif ($totallyGuarded) { throw new MassAssignmentException($key); } }
return $this; }
$priceAlert ->email = "testemail@rico.nl";
$priceAlert ->product_title = "etc";
$priceAlert ->save();
Dit is echter geen mooi oplossing, en voor wat ik wil maken ook niet praktisch om op die manier te realiseren.
Alvast onwijs bedankt!
Met vriendelijke groet,
Rico
Skype: Ric0tjuh
- Laravel5 - Problemen met mass assignement via -> fill(), create() etc
-
09-06-2015, 19:15 #1
- Berichten
- 8
- Lid sinds
- 12 Jaar
Laravel5 - Problemen met mass assignement via -> fill(), create() etc
-
In de schijnwerper
SEO-tekstschrijver inhuren | beter vindbaar met webtekstenFreelance / WerkOntvang tot 20% kickbackfee op je Google Ads klanten, waar wacht je nog op?PromotieStartpagina script V2.1 - WP plugin - Vernieuwd - Vele opties - V2.1 NU LIVEPHP scriptsProfessionele tekstschrijver (actie: 2,5 cent per woord)Freelance / Werk -
23-06-2015, 14:20 #2
- Berichten
- 92
- Lid sinds
- 14 Jaar
Re: Laravel5 - Problemen met mass assignement via -> fill(), create() etc
Werkt het volgende niet?:
PHP Code:$priceAlert = new PriceAlert(['email' => 'ricotestemail@email.com', 'product_title' => 'testproduct', 'product_id' => 10, 'price'=>5]);
$priceAlert->save();
-
23-06-2015, 14:29 #3
- Berichten
- 8
- Lid sinds
- 12 Jaar
Re: Laravel5 - Problemen met mass assignement via -> fill(), create() etc
Nope dat werkte volgens mij ook niet.
Ik heb uiteindelijk de overstap gemaakt naar 5.1 in een nieuw project en daar werkte m'n code wel gewoon.
Er zal dus iets niet lekker gezeten hebben in het framework zelf, of toch ergens in m'n eigen code.
Either way, het is "opgelost". Bedankt voor je reactie though ;)
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic