当前位置: 首页 > 知识库问答 >
问题:

如何使用空合并?在带有Laravel Eloquents的if语句中的php运算符,以检查对象是否存在[重复]

吕飞翼
2023-03-14

如何使用Null合并??PHP运算符在if语句中与Laravel Eloquents一起检查对象是否存在?目前,它显示此错误:

SQLSTATE[42S22]:找不到列:1054 “where子句”中的未知列“posts.categories_id”(SQL:从帖子中选择*categories_id = 2 和帖子categories_id不为空和帖子deleted_at为空)

当类别与帖子无关时,我尝试自由删除该类别。如果它与一个帖子关联,那么它应该显示错误消息

public function destroy(Categories $category)
{
    if ($category->posts ?? 0) {
        if ($category->posts->count() > 0 ?? 0) {
            session()->flash('warning', 'Category have related post. Can\'t be deleted!');
            return redirect()->back();
        }
    }

    $category->delete();
    session()->flash('success', 'Category deleted successfully!');
    return redirect(route('categories.index'));

}

顺便说一下,我现在有这些关系:

    App\Post.php Model 
    public function category()
    {
        return $this->belongsTo(Categories::class);
    }
    App\Categories.php Model 
    public function posts()
    {
        return $this->hasMany(Post::class);
    }

如果我删除$分类,它就可以工作-

如果可以的话,请帮助我。谢了。


共有1个答案

师谦
2023-03-14

我想我在这里找到了解决办法。我只是通过下面的SQL列重命名语句将列名category_id重命名为categories_id:

更改表帖子更改category_idcategories_idint(11);

我现在可以访问$category-

   public function destroy(Categories $category)
   {
       if ($category->posts) {
           if ($category->posts->count() > 0) {
               session()->flash('warning', 'Category have related post. Can\'t be deleted!');
               return redirect()->back();
           }
       }
       $category->delete();
       session()->flash('warning', 'Category deleted successfully!');
       return redirect(route('categories.index'));
   }

这种方法现在运行良好。

非常感谢你的帮助

 类似资料:
  • 问题内容: 我正在使用PHP读取JSON数据,并且该数据包含空对象(如)。所以问题是,我必须以不同的方式处理对象为空但无法找到足够好的方法进行检查的情况。看起来太吓人了,效率很低。有没有好的检查方法? 问题答案: 您要反序列化多少个对象?除非事实证明或强制转换是主要的放慢速度/瓶颈,否则我不会担心– Greg的解决方案就可以了。 不过,我建议在解码JSON数据时使用标志: 这会将JSON对象解码为

  • 问题内容: Javascript中是否存在空合并运算符? 例如,在C#中,我可以这样做: 我可以为Javascript找到的最佳近似是使用条件运算符: 这有点怪异恕我直言。我可以做得更好吗? 问题答案: 更新资料 JavaScript现在支持无效的合并运算符(??)。当其左侧操作数为或时,它返回其右侧操作数,否则返回其左侧操作数。 使用前请检查兼容性。 与C#null合并运算符()等效的JavaS

  • 我一直面临的问题是,一个页面中有25个div class=二级属性的元素,我正在尝试获取地址标签,但在这25个div元素中的一些元素中,地址标签可能根本不存在。 而跨度类 = 邻居将永远存在。如果有,我需要从地址中获取文本,否则我将从 span 类中获取文本 这是我在四处搜索后尝试过的代码,但它没有完成工作,因为它获得了整个站点的地址属性大小。 这些是我的原始代码。但是每当我遇到没有地址的div块

  • 问题内容: 我对对象使用开关盒有疑问: 例如:我的问题可以用Java复制: 如何使用实施? 问题答案: 这是子类型多态性有帮助的典型方案。请执行下列操作 然后,你可以简单的调用上。 如果你不能随意更改,和,则可以应用访问者模式来实现相同目的。

  • 我不相信为什么下面的陈述是有效的并且不会引发异常。 somelist是空的,首先检查if()是有效的,但是如何获取空引用的大小呢?这不违法吗? 还是它是这样工作的: 仅当条件1为真时,检查条件2? 因为我不相信,虽然我通过编写测试代码来确认。我总是喜欢下面: 请帮助我理解逻辑

  • 问题内容: 我的存储过程中的这段代码: 是类型。 执行此存储过程时,我提供了 表明 //如果是正确的 代替 它在sql中的某个函数中,用于验证字符串是否为null或为空, 或者 我在某个地方犯了错误? 就像在C#中-> 问题答案: 这是正确的行为。 如果将@设置为一个值,则下面的表达式为true 无论如何,在SQL Server中都没有这样的功能,但是您可以创建自己的功能: