Tôi đang cố gắng tìm hiểu laravel 5 với sự trợ giúp của this wondefull website. Đối với mô hình hoạt động của tôi, tôi muốn tạo các slugs trước khi lưu một cơ sở dữ liệu vào cơ sở dữ liệu của mình, vì vậy tôi đã tạo ra mô hình sau đây.Laravel tạo slug trước khi lưu
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Activity extends Model {
protected $table = 'activitys';
protected $fillable = [
'title',
'text',
'subtitle'
];
// Here I want to auto generate slug based on the title
public function setSlugAttribute(){
$this->attributes['slug'] = str_slug($this->title , "-");
}
//
}
Nhưng khi tôi lưu một đối tượng với sự giúp đỡ của các mô hình Hoạt động sên không được điền, tôi đã cố gắng thay đổi nó đến $ this-> thuộc tính [ 'title'] = "test" để thử nghiệm nhưng nó didnt chạy. Ngoài ra tôi đã thử thêm tham số $ title, $ slug vào setSlugAttribute() nhưng nó không giúp được gì.
Tôi đang làm gì sai và ai đó có thể giải thích tham số được sử dụng trong một số ví dụ cho setSomeAttribute ($ whyParameterHere).
Lưu ý: có trường sên trong cơ sở dữ liệu của tôi.
Theo đề nghị của user3158900 Tôi đã thử:
public function setTitleAttribute($title){
$this->title = $title;
$this->attributes['slug'] = str_slug($this->title , "-");
}
//
Điều này làm cho lĩnh vực tiêu đề của tôi trống rỗng nhưng tiết kiệm sên cách tôi muốn nó, tại sao là $ this-> tiêu đề trống sau đó? Nếu tôi xóa $ this-> title = $ title; cả hai tiêu đề và slug đều trống rỗng
chỉnh sửa câu hỏi với sự giúp đỡ của bạn. nó để trống tiêu đề vì một lý do nào đó. nếu tôi xóa $ this-> title = $ title; cả hai đều trống. Tôi vẫn không hiểu thông số mặc dù –
$ this-> title = $ title; nên là $ this-> attributes ['title'] hoạt động tốt ngay bây giờ! –
Sử dụng thư viện Sluggable –