如下所示,我有两个表。
1.Posts Table(记录表的内外)
id lecture_name roomkey created_at updated_at user_id
1 Ee Vonne Ng L02 2019-01-22 2019-02-03 1
2 Ee Vonne Ng L03 2019-01-22 2019-01-23 1
2.key表(keynos)
id roomkey status created_at updated_at
1 L01 0 2019-01-22 2019-02-04
2 L02 1 2019-01-22 2019-01-22
3 L03 1 2019-01-22 2019-01-22
4 L04 0 2019-01-22 2019-02-04
我遇到了问题,因为我想删除帖子中的记录,是的,我成功了,但是我希望它也将keyno状态也更新为0,以便它作为此键处于活动状态。但是我不知道我错过了什么,因为我可以删除但我无法更新Keyno状态。没有显示错误,但是我的状态没有更新。谁能帮助我或给我一些建议TT
下面是我的代码。
1 =正在使用键0 =未使用
1.Post控制器
*/
public function destroy($id)
{
$post = Post::find($id);
$post->delete();
if($post->delete()){
$post = Post::find($id);
$key = Keyno::all();
$postroomkey = $post->roomkey;
Keyno::where('roomkey','=',$postroomkey)
->update(['status' => 0]);
}
}
答案 0 :(得分:1)
您两次运行$post->delete();
。
第一个将删除帖子,但是第二个实际上不执行任何操作,这意味着它返回false,因为找不到帖子。
这意味着您在if
语句中的代码实际上并未运行。更改为此:
public function destroy($id)
{
$post = Post::find($id);
$postroomkey = $post->roomkey;
if($post->delete()){
$key = Keyno::all();
Keyno::where('roomkey','=',$postroomkey)
->update(['status' => 0]);
}
}
“试图获取非对象的属性'roomkey'”
这可能是由于$post
不再是对象,因此在删除之前先获取roomkey
。更新的答案。