Macroable.php 第 74 行中的 BadMethodCallException:方法保存不存在。拉拉维尔 5.2
Posted
技术标签:
【中文标题】Macroable.php 第 74 行中的 BadMethodCallException:方法保存不存在。拉拉维尔 5.2【英文标题】:BadMethodCallException in Macroable.php line 74: Method save does not exist. Laravel 5.2 【发布时间】:2017-01-09 14:30:00 【问题描述】:你好,我是 laravel 的新手,现在我遇到了这个错误 BadMethodCallException in Macroable.php line 74: Method save does not exist.
如果我 var_dump(); die();
所有输出,那么我将得到所有输出,但是当我使用 save 方法将结果保存到数据库时,它给了我这个 save method does not exist
错误。我不知道我的代码在哪里做错了。
请查看路由控制器和视图以获得正确理解。提前谢谢你。
控制器
public function td($id)
$tn = $this->t->getAllTn();
$to = $this->t->getAllTo();
$time = Carbon\Carbon::now(); // current time
$time->toDateTimeString(); // converting time to string
if((isset($_POST["n"]) && !empty($_POST["n"])))
$tn->t_type_id = Input::get('options');
$tn->d_id = $id;
$tn->result = Input::get('message');
$tn->date = $time;
// var_dump($tn->date);
// var_dump($tn->t_type_id);
// var_dump($tn->d_id);
// var_dump($tn->result);
// die();
Session::flash('message', 'Your tn has been added.');
$tn->save();
else if((isset($_POST["o"]) && !empty($_POST["o"])))
$to->d_id = $id;
$to->outcome = Input::get('message');
$to->date = $time->toDateTimeString();
// var_dump($to->d_id);
// var_dump($to->outcome);
// var_dump($to->date = $time->toDateTimeString());
// die();
Session::flash('message', 'Your to has been added.');
$to->save();
return redirect('/t');
路线
Route::get('/t/id', 'TController@td');
Route::post('/t/id', 'TController@td');
查看
<div class="form-group">
<form action="/t/ $d['id'] " method="post">
csrf_field()
<div class="panel-body"><h4>Heading here</h4></div>
<select class="form-control" id="options" name="options" style="width:100%" type="checkbox">
@foreach($t as $t)
<option value=" $t->id "> $t->type </option>
@endforeach
</select>
</div>
<div class="col-md-4" id="value" align="center">
<div class="panel panel-warning">
<div class="panel-heading">
Enter text below
</div>
<div class="form-group has-success">
<textarea class="form-control" id="message" name="message" placeholder="Please enter your message here..." rows="5"></textarea>
<input type="submit" class="btn btn-primary" name="n" value="A-N">
<input type="submit" class="btn btn-primary" name="o" value="A-O">
</div>
</form>
<!-- Notes: <br/>-->
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
function hide()
$("#value").hide();
$("#h").hide();
$("#search").hide();
function show()
$("#value").show();
$("#h").show();
$("#search").show();
function initHandlers()
$("#options").on('click', function()
show();
);
hide();
initHandlers();
</script>
接口实现
public function getAllTn()
return TN::all();
public function getAllTO()
return TO::all();
【问题讨论】:
您要保存收藏吗?$to
是TO::all()
的结果,它应该返回一个Collection
。
它只是一个文本区域消息以及一个 id 和日期时间e.g 'This is message" added on user id '5'
...我不知道为什么我得到它...
我只是想将id
和result (message)
存储在数据库中的列下。
TO:all()
表示获取table TO
中的所有列,如果您看到$to->d_id = $id; $to->outcome = Input::get('message'); $to->date = $time->toDateTimeString();
,那么我只是从控制器中的表单中请求这些列,并且由用户通过视图中的表单...
【参考方案1】:
您实例化Model
s 的方式是错误的。尝试类似:
$to = new TO();
$to->d_id = $id;
$to->outcome = Input::get('message');
$to->date = $time->toDateTimeString();
$to->save();
【讨论】:
这肯定会起作用,但是如果您在视图中看到两个按钮T-A
和T-O
,那么实际上我想要做的是当用户点击T-A
数据时保存在TA
表中,当用户单击T-O
时,数据将存储在TO
表中。为此我使用了if((isset($_POST["n"]) && !empty($_POST["n"])))
...你明白我的意思了吗?
o 是的,它已经完成了......非常感谢你的帮助......你是对的,实际上我正在实例化“模型错误”......我在 isset
中调用了`new TO`它正在工作......我忘记了这部分......非常感谢你的帮助...... :)【参考方案2】:
您不需要获取所有项目来更新具有相同数据的所有项目吗?
如果模型字段是可填充的,您可以批量分配它们。
$data = [
't_type_id' => request()->input('options'),
'd_id' => $id,
'result' => request()->input('message'),
'date' => $time->toDateTimeString()
];
TN::update($data); // this will update all TN entries
不确定是否只需要更新 TN 表中的 1 个或很多项?
【讨论】:
以上是关于Macroable.php 第 74 行中的 BadMethodCallException:方法保存不存在。拉拉维尔 5.2的主要内容,如果未能解决你的问题,请参考以下文章
方法 Illuminate\Routing\Route::resource 不存在。在 Macroable.php 第 78 行
HtmlServiceProvider.php 第 36 行中的 FatalErrorException:laravel
从 UITableView 中删除行会更改存储在其他行中的信息
AH00526:/etc/apache2/apache2.conf 第 74 行的语法错误:参数文件中的 Mutex 目录无效:$APACHE_LOCK_DIR