You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6中如何用一个模型对应多张数据表?新手求简明教程

一个Laravel模型操作多张数据表的简明实现

嘿,作为刚从CodeIgniter转Laravel的新手,这种“一个模型管多张表”的需求完全能实现,而且操作逻辑和你熟悉的CI路子很像!我直接给你对应到Laravel的代码示例,一看就懂:

控制器:MyController.php

在Laravel里,我们可以用Request类或者request()助手获取POST数据,调用模型方法的逻辑和CI几乎一致:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\MyModel;

class MyController extends Controller
{
    public function shipBuilding(Request $request)
    {
        $data = $request->all(); // 或者用$request->only(['字段1','字段2'])按需获取指定字段
        $response = (new MyModel)->shipbuildingSave($data);
        
        // 这里可以根据$response做后续处理,比如返回JSON或页面跳转
        return response()->json($response);
    }

    public function contact(Request $request)
    {
        $data = $request->all();
        $response = (new MyModel)->contactSave($data);
        
        return response()->json($response);
    }
}

模型:MyModel.php

Laravel默认是一个Eloquent模型对应一张表,但我们可以在模型的方法里动态指定数据表,或者直接用DB门面操作不同表,两种实用方式都给你列出来:

方式1:用Eloquent动态切换数据表(推荐,能用到Eloquent的便捷方法)

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class MyModel extends Model
{
    // 无需设置默认$table,我们会在方法里动态切换
    protected $guarded = []; // 允许所有字段批量赋值(开发环境可用,生产建议精准设置$fillable)

    public function shipbuildingSave($data)
    {
        // 动态切换到shipbuildings表,执行插入操作
        return $this->setTable('shipbuildings')->create($data);
    }

    public function contactSave($data)
    {
        // 切换到contacts表执行插入操作
        return $this->setTable('contacts')->create($data);
    }
}

方式2:用DB门面直接操作(和CI的DB操作逻辑更贴近)

如果你更习惯CI里直接操作数据库的感觉,用DB门面也完全没问题:

namespace App\Models;

use Illuminate\Support\Facades\DB;

class MyModel
{
    public function shipbuildingSave($data)
    {
        return DB::table('shipbuildings')->insert($data);
    }

    public function contactSave($data)
    {
        return DB::table('contacts')->insert($data);
    }
}

小提示

  • 如果用Eloquent的create()方法,记得要么设置$fillable指定允许批量赋值的字段,要么设置$guarded = [](后者更省心但生产环境建议谨慎使用)
  • 两种方式都可以扩展复杂操作,比如查询、更新、删除,用法和CI的查询构造器逻辑高度相似,上手毫无压力

内容的提问来源于stack exchange,提问作者Bablu Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:37:11