要使用thinkphp框架的model写出:有pg_Inquiry(id )和pg_InquiryDetail(id, inquiry_id,full_estate_name,size,usage,zd_bh,zd_area,zd_price,zd_build_price)表,pg_InquiryDetail.inquiry_id跟,pg_Inquiry.id关联。现传入inquiry_id 和 full_estate_name,更新pg_InquiryDetail指定inquiry_id和full_estate_name都完全一致的pg_InquiryDetail数据;如果inquiry_id相等但full_estate_name不等,就插入一条数据。
时间: 2023-07-05 22:27:47 浏览: 86
thinkphp模型
好的,以下是使用 ThinkPHP 框架的 Model 写出的解决方案:
首先,需要创建一个对应 `pg_InquiryDetail` 表的 Model,比如我们可以创建一个 `PgInquiryDetailModel` 类。在该类中,我们可以定义一个 `updateOrInsert` 方法,用于实现您的需求:
```php
<?php
namespace app\model;
use think\Model;
class PgInquiryDetailModel extends Model
{
// 指定对应的数据表名
protected $table = 'pg_InquiryDetail';
// 定义 updateOrInsert 方法
public function updateOrInsert($inquiry_id, $full_estate_name, $size, $usage, $zd_bh, $zd_area, $zd_price, $zd_build_price)
{
// 尝试更新符合条件的数据
$affected_rows = $this->where(['inquiry_id' => $inquiry_id, 'full_estate_name' => $full_estate_name])
->update(['size' => $size, 'usage' => $usage, 'zd_bh' => $zd_bh, 'zd_area' => $zd_area, 'zd_price' => $zd_price, 'zd_build_price' => $zd_build_price]);
// 如果更新影响的行数为 0,则说明没有匹配到任何数据,我们就插入一条新数据
if ($affected_rows == 0) {
$this->create([
'inquiry_id' => $inquiry_id,
'full_estate_name' => $full_estate_name,
'size' => $size,
'usage' => $usage,
'zd_bh' => $zd_bh,
'zd_area' => $zd_area,
'zd_price' => $zd_price,
'zd_build_price' => $zd_build_price,
]);
}
}
}
```
以上代码中,我们先指定了对应的数据表名。然后,定义了一个 `updateOrInsert` 方法,该方法接受传入的各个字段值,然后尝试更新符合条件的数据。如果更新影响的行数为 0,则说明没有匹配到任何数据,我们就使用 `create` 方法插入一条新数据。
最后,我们可以在 Controller 中使用该 Model 来实现具体的需求,比如:
```php
<?php
namespace app\controller;
use app\model\PgInquiryDetailModel;
use think\Request;
class PgInquiryController
{
public function updateOrInsert(Request $request)
{
$inquiry_id = $request->param('inquiry_id');
$full_estate_name = $request->param('full_estate_name');
$size = $request->param('size');
$usage = $request->param('usage');
$zd_bh = $request->param('zd_bh');
$zd_area = $request->param('zd_area');
$zd_price = $request->param('zd_price');
$zd_build_price = $request->param('zd_build_price');
$pgInquiryDetailModel = new PgInquiryDetailModel();
$pgInquiryDetailModel->updateOrInsert($inquiry_id, $full_estate_name, $size, $usage, $zd_bh, $zd_area, $zd_price, $zd_build_price);
return '更新成功';
}
}
```
以上代码中,我们首先获取传入的各个字段值。然后,创建一个 `PgInquiryDetailModel` 对象,并调用其中的 `updateOrInsert` 方法进行更新或插入操作。最后,返回一个成功信息即可。
希望以上信息能够帮助到您。
阅读全文