как сделать структуру таблицы ставок для разных типов пользователей - PullRequest
0 голосов
/ 21 февраля 2019

Я так отчаялся и долго думал об этом и не представляю, насколько я буду благодарен за вашу помощь.Поверь мне.

Вот мой сценарий.Есть 3 типа пользователей (ролей).Клиент, Провайдер услуг, Администратор.

Клиент - добавляет новые заказы

Поставщик услуг - выполняет добавленные заказы

Администратор - проверяет, правильно ли добавлен заказ клиента, находит поставщика услуг и дает егосервис-провайдеру.

Когда клиент добавил новый заказ, должно произойти следующее: между клиентом и администратором должна быть система ставок.возможно цена заказа при добавлении была 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 |
+----+----------+---------+-------+

Теперь, как узнать, какая ставка предназначена для администратора, для клиента, а для поставщика услуг??В основном, я хочу получить все заявки клиентов и заявки администраторов для order_id 2, а также заявки поставщиков и заявки администраторов для order_id 2.Я старался изо всех сил, но до сих пор не могу понять это.Может быть, лучшую версию вы можете посоветовать мне использовать.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вы можете получить ваши предложения с объединениями

$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();
0 голосов
/ 21 февраля 2019

Я не уверен, хотите ли вы отдельные списки или получить все ставки, а затем проверьте, чтобы я сделал оба.Они оба работают с предоставленной вами таблицей примеров.

$bids = Bid::where('order_id', 2)->get(); //Get all bids where order_id=2
foreach($bids as $bid){ //Loop through fetched bids
    if($bid->userable_type=="App\Http\Models\Client"){ //If user is 'Client'
        //User is client
    }
}

$bids = Bid::where('order_id', 2)->where('userable_type', "App\Http\Models\Client")->get(); //List with only bids from Clients

Дайте мне знать, что вы думаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...