前言:
现在同学们对“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']);
用浏览器打开进行验证,可以看到以下效果:
说明一对一模型是成功的,这一节就介绍到这里,下一节将介绍一对多的关系。