我试图删除使用此功能的民意调查,我需要分离关系:
public function destroy($id)
{
$poll = Poll::findOrFail($id);
$poll->answers()->detach();
$poll->poll_user()->detach();
$poll->delete();
}
但我收到此错误消息,我不知道原因:
调用未定义的方法Illuminate \ Database \ Query \ Builder :: detach()
以下是民意调查模型:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Poll extends Model
{
/**
* La table utilisée par le modèle
*
* @var string
*/
protected $table = 'polls';
/**
* On utilise les dates de mise à jour
*
* @var bool
*/
public $timestamps = true;
/**
* Attributs autorisés en ensignement de masse.
*
* @var array
*/
protected $fillable = ['question'];
/**
* Relation de type 1:n
*
* @return Illuminate\Database\Eloquent\Relations
*/
public function answers()
{
return $this->hasMany('App\Models\Answer');
}
/**
* Relation de type n:n
*
* @return Illuminate\Database\Eloquent\Relations
*/
public function users()
{
return $this->belongsToMany('App\Models\User')->withTimestamps();
}
}
答案 0 :(得分:0)
请尝试以下代码:
public function destroy($id)
{
$poll = Poll::findOrFail($id);
$poll->answers()->dissociate();
$poll->users()->sync([]);
$poll->delete();
}
如果不起作用,则可能需要查看其他模型或迁移。
答案 1 :(得分:0)
好吧,我不知道它是否正确,但我已经完成了以下工作并且完美无缺:
public function destroy($id)
{
$poll = Poll::findOrFail($id);
$poll->answers()->delete();
$poll->users()->detach();
$poll->delete();
}
答案 2 :(得分:0)
我想你在模型中以正确的方式建立了连接,我认为你试图在父控制器中调用这个方法(而不是在子控制器中)。 基于这些代码应该有效...
{{1}}
答案 3 :(得分:0)
/**
* Removing an entity
*
* @param integer $id
* @return void
*/
public function destroy($id)
{
$this->getById($id)->users()->detach();
$this->getById($id)->answers()->delete();
$this->getById($id)->delete();
}
/**
* Getting an entity by id
*
* @param integer $id
* @return void
*/
public function getById($id)
{
return Poll::find($id);
}
答案 4 :(得分:0)
您不能在oneToMany关系中使用Same letters are: dc
。
您可以使用detach()
delete()
和您的用户分离是不正确的。您可以像这样使用分离
$poll->answers()->delete()