laravel - 在多个表上构建查询
问题描述
我想使用 Eloquent 运行以下查询。
SELECT * FROM `orders`, `order_status` WHERE `orders`.`id` = `order_status`.`order_id` AND `orders`.`payment` > 0 AND `order_status`.`status_id` = 1
但是我对如何order_status.status_id = 1
在 Eloquent 上应用最后一个条件 ( ) 感到困惑,因为它在另一个表上。我应该加入他们还是可以通过 Eloquent 关系应用它?
表的数据库架构:
订单:
Schema::create('orders', function (Blueprint $table) {
$table->increments('id');
$table->timestamps('');
$table->integer('sender_id');
$table->integer('sender_franchise');
$table->integer('sender_agent')->nullable();
$table->integer('recipient_franchise');
$table->integer('recipient_agent')->nullable();
$table->integer('category_id');
$table->decimal('payment');
$table->decimal('final_payment');
$table->string('order_code');
$table->decimal('extra_charge');
$table->integer('recipient_id');
$table->decimal('condition_charge')->nullable();
$table->decimal('condition_amount')->nullable();
$table->boolean('condition_charge_recipient')->nullable();
$table->integer('quantity');
$table->integer('created_by');
$table->string('receiver_name')->nullable();
$table->string('receiver_ph')->nullable();
$table->text('shipping_address')->nullable();
});
订单状态:
Schema::create('order_status', function (Blueprint $table) {
$table->increments('id');
$table->integer('order_id');
$table->integer('status_id');
$table->integer('created_by');
$table->timestamps('');
});
解决方案
你应该试试这个
Order::join('order_status', 'orders.id' = 'order_status.order_id')
->where('orders.payment', '>', 0)
->where('order_status.status_id', '=', '1');
推荐阅读
- java - 简单的休眠映射问题
- react-native - 我可以在我的反应原生应用程序中使用颤振吗?
- gcc - 为什么objdump的汇编编码不一样?
- javascript - 难以理解 d3 树节点转换
- c - 使用c中的指针进行矩阵乘法
- android - Android 资源链接失败 Android Studio 3.3.1
- r - looking for mutate_if, but for rows not columns
- java - My System.currentTimeMillis() method calls are not registering properly. I don't understand why they stay at 0.0
- python - How can I allow a fuzzy regex match for only part of the pattern?
- python - 与服务器 Python 的多套接字连接