我太绝望了,已经想了很长时间,无法想象我会多么感激你的帮助。相信我。
这是我的设想。有三种类型的用户(角色)。客户,服务提供商,管理员。
客户端-添加新订单
服务提供商-执行添加的订单
管理员-确保客户端添加的顺序正确,查找
并将其提供给服务提供商。
当客户添加新订单时,客户和管理员之间必须有投标系统。也许加起来的订单价格是50美元。客户可以出价40美元,然后管理员可以同意这个或出价另一个价格。然后客户可以选择接受或尝试其他价格等。这是主意。当价格已经协商,同样的过程必须在服务提供商和管理员之间进行。
因此,我需要一个表,我存储投标之间的客户和管理,管理和服务提供商,我也需要存储投标历史,而不是最新的出价。
用户表

+----+--------+---------------------------------+-------------+
| id |  name  |          userable_type          | userable_id |
+----+--------+---------------------------------+-------------+
|  1 | George | App\Http\Models\Client          |           2 |
|  2 | John   | App\Http\Models\ServiceProvider |           3 |
|  3 | Ben    | App\Http\Models\Admin           |           4 |
+----+--------+---------------------------------+-------------+

客户端表/管理表/服务提供程序表现在看起来都一样
+----+--+
| id |  |
+----+--+
|  1 |  |
|  2 |  |
|  3 |  |
+----+--+

现在如果我想做投标表,我不想为服务提供商,管理员和客户分别做新表。我宁愿让它成为唯一的一个。
举个例子:
+----+----------+---------+-------+
| id | order_id | user_id | price |
+----+----------+---------+-------+
|  1 |        2 |       1 |    50 |
|  1 |        2 |       1 |    60 |
|  1 |        2 |       3 |    70 |
+----+----------+---------+-------+

现在我怎么知道哪个出价是行政,哪个是客户,哪个是服务提供商?基本上,我想得到的是所有客户出价和管理出价的订单ID 2,也提供程序出价和管理出价的订单ID 2。我尽力了,但还是搞不懂。也许更好的版本你可以建议我使用。
谢谢您。

最佳答案

你可以通过加入获得你的出价

$bids = DB::table('bids')
        ->join('users', 'users.id', '=', 'bids.user_id')
        ->select('bids.*', 'users.userable_type')
        ->where('bids.order_id',$order_id)
        ->whereIn('users.userable_type', ['App\Http\Models\Client','App\Http\Models\Admin'])
        ->get();

09-27 01:56