删除了此表行后,更新另一个表中laravel指定列

问题描述 投票:1回答:1

正如你看到下面我有两个表。

1.Posts表(表中的记录中的输入和输出)

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

重点开放表(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

下面是我的代码。

在使用0 =不使用1 =密钥

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]);
    }
}
laravel laravel-5
1个回答
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的对象。更新了答案。

© www.soinside.com 2019 - 2024. All rights reserved.