4-5 saat uğraştım. En sağlam yöntem olarak bu methodları yazdım. Ne yaptıysa OneToMany ilişkisinde update() methodunu sağlıklı bir şekilde kullanamadım. Teslerde hep bir yerde sorun çıkarıyor.
Benzer bir kullanım örneği olsun diye forma attım. Lazım olur..
Kodlar Ürün kategorisine ait görsellerin dosya yollarını kayıt edildiği ProCategoryImage modeline kayıt edilmesini sağlıyor.
// ProCategory.php
/**
* Defining releation to ProCategoryImages
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function ProCategoryImages() {
return $this->hasMany('ProCategoryImage', 'procategory_id', 'id');
}
/**
* To add image path for Product Category
*
* @param array $data
* @return boolean
*/
public function addImage(array $data=array()) {
foreach ($data as $value) {
// ProCategory Modeline ait çoklu ilişkili ProCategoryImages Modeli
$return = $this->ProCategoryImages()->create(['path' => $value]);
if ($return === false || $return === null) {
return false;
}
}
return true;
}
/**
* To update images model
*
* @param array $data Paths of images
* @return boolean
*/
public function updateImage(array $data=array()) {
$this->DeleteAllImageModel();
if (count($data) === 0) {
return;
}
return $this->addImage($data);
}
/**
* To delete all ımages...
*/
public function DeleteAllImageModel() {
$models = $this->ProCategoryImages === null ? array() : $this->ProCategoryImages;
$deleted =array();
foreach ($models as $v) {
$deleted[] = $v->delete();
if (in_array(false, $deleted)) {
throw new Exception('Görseller silinemedi!');
}
}
}
Bu üç method Ürün kategorisine ait görsellerin dosya yollarını ekler, günceller ve siler..