【发布时间】:2017-04-19 00:45:51
【问题描述】:
我编写了一个名为Categorizable 的类,它允许扩展它的类和Category 类之间的多态多对多关系。它工作得很好,但我注意到,如果我调用一个方法将类别添加到可分类对象,它会在连接表上添加条目,但我的实际对象没有更新。如果我尝试在我的对象上调用categories,它不会更新数据库中的内容。我想让我的对象保持最新,这样我就不必在每次添加类别时查询数据库。
Categorizable.php
class Categorizable extends Model{
public function categories(){
return $this->morphToMany(Category::class, 'categorizable');
}
public function addCategory(\App\Category $category){
if ( $this->isValidCategory($category) ){
if ( $this->hasCategory($category) ){
return false;
}
else{
$this->categories()->save($category);
return true;
}
}
else{
return false;
}
}
public function removeCategory(\App\Category $category){
if ( $this->isValidCategory($category) ) {
if ($this->hasCategory($category)) {
$this->categories()->detach($category);
return true;
}
else {
return false;
}
}
else{
return false;
}
}
public function hasCategory(\App\Category $category){
return $this->categories->contains($category);
}
public function isValidCategory(\App\Category $category){
if ( $category->category_type === get_class( $this ) ){
return true;
}
else{
return false;
}
}
如果这在 Laravel 5.2 中无法实现或被认为是不好的做法,请说出来。如果您对我如何改进这一点有任何建议,也欢迎。谢谢。
【问题讨论】:
标签: php class oop laravel-5 polymorphic-associations