【发布时间】:2014-09-15 05:53:47
【问题描述】:
我正在尝试在我的数据库中保存两个表 actividads 和 fichas 之间的关系(通过数据透视表:actividad-ficha。我收到以下消息:
Symfony\Component\Debug\Exception\FatalErrorException (E_ERROR)
在非对象上调用成员函数 actividads()
我通过我的 Route 两个变量(ids):
Route::get('ficha/{id_ficha}/{id_actividad}', array('uses' => 'FichaController@enFicha'));
然后,在我的“FichaController”中:
public function enFicha($id_ficha, $id_actividad)
{
$ficha = Ficha::find($id_ficha);
// $actividad_id = Actividad::find($id_actividad); (doesnt work)
$actividad_id = $id_actividad;
$ficha->actividads()->sync($actividad_id, false);
return Redirect::route('actividads.index');
}
这是我的模型:
class Actividad extends Eloquent {
protected $guarded = array();
public function fichas()
{
return $this->belongsToMany('Ficha', 'actividad_ficha')->withTimestamps(); //
}
class Ficha extends Eloquent {
protected $guarded = array();
public function actividads()
{
return $this->belongsToMany('Actividad', 'actividad_ficha')->withTimestamps();
}
更改@decco 和@Ben 的建议后,我收到下一条错误消息:
Argument 1 passed to Illuminate\Database\Eloquent\Relations\BelongsToMany::formatSyncList() must be of the type array, string given, called in /Applications/XAMPP/xamppfiles/htdocs/webs/lara4/edu1/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php on line 578 and defined
我不知道这有什么问题...有什么想法吗??
非常感谢!!
【问题讨论】:
-
这是不言自明的。将第一行更改为:
$ficha = Ficha::find($id_ficha)。顺便说一句,你想分离所有其他关系,只留下这一个吗?可能不会,所以使用sync($actividad_id, false) -
现在,我有下一个错误:传递给 Illuminate\Database\Grammar::columnize() 的参数 1 必须是数组类型,给定字符串,在 /Applications/XAMPP/xamppfiles/htdocs 中调用/webs/lara4/edu1/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php 在第 105 行并定义
-
我试过了: $actividad_id = array( 'id' => $id_actividad );但它不起作用!
标签: sql laravel-4 eloquent pivot-table relationships