ich zur Zeit einen Blog erschaffe, wo jede Beitrag Zeile in meiner Datenbank ein eindeutiges Hash Attribut hat, die von der Post-ID basierte (Erhöhen, immer einzigartig).Laravel 5.2 - Mit SetIdAttribute() Mutator Anderen Werten einstellen
Das ist mein Beitrag Modell
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Hashids;
class Post extends Model
{
public function setTitleAttribute($value)
{
$this->attributes['title'] = $value;
if (! $this->exists) {
$this->attributes['slug'] = str_slug($value);
}
}
public function setIdAttribute($value) {
$this->attributes['id'] = $value;
$this->attributes['hash'] = Hashids::encode($value);
}
}
Wenn ich laufen diese Fabrik
$factory->define(App\Post::class, function (Faker\Generator $faker) {
return [
'title' => $faker->sentence(mt_rand(3, 10)),
'content' => join("\n\n", $faker->paragraphs(mt_rand(3, 6))),
'author' => $faker->name,
'category' => rand(1, 20),
];
});
Der setIdAttribute ($ value) Funktion aufgerufen wird immer, aber meine Hash-Attribut ist nicht gesetzt werden. Ich bin mir nicht sicher, ob es überschrieben wird oder was.
Wenn ich die Linie
$this->attributes['hash'] = Hashids::encode($value);
auf die Funktion
public function setTitleAttribute($value)
und kodieren den Titel bewegen Attribut es funktioniert gut, aber ich möchte das Attribut ‚id‘ codieren. Irgendeine Idee, wie ich das machen würde?
änderte es das Modell zu dieser (http: // i.imgur.com/ivZFYCy.png), und jetzt werden der Hash und der Slug nicht gesetzt – StackOverflower
Ich dachte mir, dass ich $ modell-> save() hinzufügen musste; bis zum Ende der Aufgaben – StackOverflower