【问题标题】:Laravel pivot table record check and also check in main tableLaravel 数据透视表记录检查并检查主表
【发布时间】:2019-08-19 03:51:56
【问题描述】:

我在村图书馆创建了一个图书馆管理项目。

我有三张桌子。

books
---------
id
title
copies

borrowers
---------
id
name

borrows
---------
id
cleared
book_id
borrower_id

我加入了borrower 表和books 表与borrows 表有一个关系。

我的问题是书本是否有 2。 1 被某个用户借用了另一个在图书馆中可用的副本。 我正在尝试获取图书馆中是否有一份副本,然后显示以借阅。

这是我的代码。

    $books = Book::doesnthave('borrows', 'or', function($query) {
        $query->where('cleared', '=', '0');
       })->get();
    return AllBookResource::collection($books);

如果有一本,我想借出已清除的书籍或未清除的书籍。

【问题讨论】:

    标签: laravel eloquent relationship


    【解决方案1】:

    我会改变你处理副本的方式。

    解决方案

    为现有的副本另作一张表格,这样,您可以更轻松地进行更改,例如添加书籍的版本,印刷年份,并且更容易查看它是否有副本可供借阅。

    【讨论】:

    • 好主意兄弟我会试试的
    【解决方案2】:

    您可以查看未清还的借阅书籍数量,仅将高于该数量的书籍归还。

    $books = Book::withCount('borrows', 'or', function($query) {
        $query->where('cleared', '=', '0');
       })
         ->whereColumn('borrows_count', '<', 'books.copies')
         ->get();
    return AllBookResource::collection($books);
    

    注意 whereColumn 函数仅在 laravel 5 及以上版本可用。

    【讨论】:

    • 兄弟我试过但错误返回未知列'borrows_count'
    • 请不要叫我兄弟。这很奇怪,不应该发生。文档laravel.com/docs/5.8/… 以这种方式解释它,我已经看到一些使用几乎相同的代码的实现。你使用的是哪个版本的 Laravel?
    猜你喜欢
    • 1970-01-01
    • 2016-05-19
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多