龙空技术网

laravel9框架一对一模型关联快速入门

编程自学 147

前言:

现在同学们对“laravel关联查询”大约比较注意,咱们都需要分析一些“laravel关联查询”的相关内容。那么小编同时在网络上收集了一些对于“laravel关联查询””的相关文章,希望小伙伴们能喜欢,同学们快快来了解一下吧!

模型关联在laravel框架中很常见,需要搞清楚到底谁关联谁,也就是说谁是主表谁是从表,

例如去银行办业务,需要用到排队编号,一个客户对应一个编号,从客户表中通过编号ID查询编号,那么就是客户关联编号,客户是主,编号是从。这种是典型的一对一模型关系。

下面让我们先来新建一个客户表和排队编号的生成文件。

执行命令:

php artisan make:migration create_clients_tablephp artisan make:migration create_nums_table

执行上面命令后,发现已经生成了两个文件:

接下来,我们需要进一步设计设计表结构,关于生成文件的可用字段类型,Illuminate\Database\Schema\Blueprint 提供了多种方法,Blueprint.php的路径是:\vendor\laravel\framework\src\Illuminate\Database\Schema。

2022_08_29_073411_create_clients_table.php中新增

    public function up()    {        Schema::create('clients', function (Blueprint $table) {            $table->id();            $table->string("client_name");//客户名称            $table->integer('n_id');//关联编号ID            $table->timestamps();        });    }

2022_08_29_073429_create_nums_table.php中新增:

然后执行迁移命令:php artisan migrate

查看数据库,可以看到这两个表已经生成:

添加数据:

接下来我们新建两个模型:

执行命令:

php artisan make:model Clientsphp artisan make:model Nums

可以看到两个模型文件已经生成。

需要对这两个模型进行进一步设计代码:

    protected $table = "clients";    public $timestamp = false;    //一对一的关系    public function num(){        return $this->hasOne('App\Models\Nums','id','n_id');    }    public function test1(){        $list = $this->get();        foreach($list as $val){            echo $val->id."<br/>".$val->client_name."<br/>"."对应编号:".$val->num->num_name."<br/>";        }    }

新建控制器ClientController

php artisan make:controller ClientController

然后在控制器中添加:

  //一对一模型关系    public function oneToOne(){        $client = new Clients();        $list = $client->test1();        dd($list);    }

在路由文件web.php中添加

//一对一模型关系演示Route::any('one-to-one',[ClientController::class,'oneToOne']);

用浏览器打开进行验证,可以看到以下效果:

说明一对一模型是成功的,这一节就介绍到这里,下一节将介绍一对多的关系。

标签: #laravel关联查询 #laravel关联模型where查询