精华内容
下载资源
问答
  • laravel表查询

    2020-06-01 21:06:21
    表查询得有张有联系的数据表,(除了自己连接自己的,自联查询) 案例:创建个表,进行关联查询(使用laravel的数据迁移) 创建个表,article表和author表。 (1)使用php artisan的命令创建迁移文件 在...

    联表查询得有两张有联系的数据表,(除了自己连接自己的,自联查询)


    案例:创建两个表,进行关联查询(使用laravel的数据迁移)

    	创建两个表,article表和author表。
    

    (1)使用php artisan的命令创建迁移文件
    在laravel文件目录下打开命令行窗口,输入下面命令,回车。

    //创建article表迁移文件
    #php artisan make:migration create_article_table
    //创建author表迁移文件
    #php artisan make:migration create_author_table
    

    (2)编写两个迁移文件的代码
    在create_article_table的迁移文件中的up方法里写入下面创建表的字段

     public function up()
        {
            Schema::create('article', function (Blueprint $table) {
            //主键自增
                $table->bigIncrements('id')->comment('主键');
                //作者名字,vachar类型,字段长度50,唯一
                $table->string('article_name',50)->unique()->comment('文件名称');
                //作者的id
    			$table->tinyInteger('author_id')->comment('作者id');
            });
        }
    

    在create_author_table的迁移文件中的up方法里写入下面创建表的字段

      public function up()
        {
            Schema::create('author', function (Blueprint $table) {
            //主键自增
              $table->bigIncrements('id')->comment('主键');
              //作者名字
              $table->string('author_name')->comment('作者name');
            });
        }
    

    上面两个迁移文件up方法中编写的id是相互关联的!

    (3)执行生成数据表的迁移文件
    命令行窗口输入:php artisan migrate
    执行以后,数据表中就会有article和author表,并且有上一步在迁移文件里写的字段
    (4)模拟数据的填充(通过填充器来实现)
    创建填充器文件:
    在项目的命令行窗口中编写创建填充器代码:php artisan make:seeder ArticleAndAuthorTableSeeder

    创建完成以后,在databases/seeds/里有刚创建的文件(ArticleAndAuthorTableSeeder)。
    打开编写,进行模拟数据的填充:

     public function run()
        {
            //article里进行数据填充
            DB::table('article')->insert(
            		[
                  [
                      'article_name'		=>'怎么保养皮肤',
                      'author_id'		=>rand(1,5),
    
                  ],
                  [
                     'article_name'		=>'怎么减肥',
                     'author_id'		=>rand(1,5),
                    ],
                  [
                      'article_name'		=>'自律给我自由',
                      'author_id'		=>rand(1,5),
                    ],
                  [
                    'article_name'		=>'学霸养成记',
                    'author_id'		=>rand(1,5),
                    ],
            		]
            );
            //author表里进行数据填充
            DB::table('author')->insert(
            		[
                  [
                      'author_name'     =>'张三',
    
                  ],
                  [
                    'author_name'     =>'李四',
                    ],
                  [
                      'author_name'     =>'王五',
                    ],
                  [
                   'author_name'     =>'刘六',
                    ],
            		]
            );
        }
    

    填充完以后,执行填充器文件,命令行输入:php artisan db:seed --class=ArticleAndAuthorTableSeeder

    执行完以后,article表里和author表里就有填充的文件了
    在这里插入图片描述
    在这里插入图片描述


    然后进行联表查询:


    链表的方式: 内联和外联(左外联,右外联)
    用链式操作进行链接:
    (1)创建路由;

    //联表查询
    Route::get('duobiaoselect','TestController@duobiaoselect');
    
    

    (2)编写控制器代码;

    
    //联表查询
    public function duobiaoselect(){
        /*
        把sql语句改写成链式操作,实现效果
        select t1.id,t1.article_name as article_name,t2.author_name as
        author_name from article as t1 left join author as t2 on t1.author_id = t2.id;
        语法:DB门面 -> join联表方式名称小驼峰写法(关联的表名,表1的字段,运算符,表2的字段)
        */
       $data=DB::table('article as t1')
                ->select('t1.id','t1.article_name','t2.author_name')
                ->leftjoin('author as t2','t1.author_id','=','t2.id')
                ->get();
    
       dump($data);
    }
    
    

    (3)直接访问,就可以查询到内容了
    在这里插入图片描述

    展开全文
  • 可如果有个多个表查询起来不久很麻烦了嘛,所以这个时候我们可以借助一下 Laravel 模型里的一个方法,别名(实际上 原生SQL 语句也可使用此方法,但此文章不讲述其原理) 假设的一种数据表关联 表名 关联字段 ...

    假设如今我们正在做一个系统,这个系统是属于订票那一类的航班或者车票系统。 然后搜索功能里有出发城市和目的城市等两个搜索条件。
    如果我们的航线是直接对标城市的话,那么搜索其实挺简单的,只是个两个表关联查询。 可如果有个多个表查询起来不久很麻烦了嘛,所以这个时候我们可以借助一下 Laravel 模型里的一个方法,别名(实际上 原生SQL 语句也可使用此方法,但此文章不讲述其原理)

    假设的一种数据表关联

    表名 关联字段
    Trains(火车表) lines_id
    Lines(线路表) from_station_id , to_station_id
    Stations(站点表) city_id
    Cities(城市表) id

    好,看完上面的表后我们可以大致理解 Trains -> Lines -> Stations -> Cities 这几个表的关系
    (一辆火车所行使的一条路上,他的起点站和终点站都是属于某个城市里的某一个站点)。

    关联 Trains 与 Lines

    那么我们去建立一个模型 – Trains,并且与 Lines 表关联查询,查询完后我们的火车便与他所行驶的路线数据关联起来了

    		Trains::join("lines","lines.id","=","trains.lines_id")
                ->get();
    

    然后我们从上面的表里可以得知,Lines 表有两个字段是关联到 Stations 表的,假设如果是直接关联到 Cities 表,那么客户传过来的 出发城市id 和到达城市id 我们直接对应就好了。可问题是 Lines 表 直接关联的Stations 表,而只有 Stations 表是关联到城市表的。

    (那么你能直接这样吗? = . =)

    		Trains::join("lines","lines.id","=","trains.lines_id")
                ->join("stations","stations.id","=","lines.from_station_id")
                ->join("stations","stations.id","=","lines.to_station_id")
                ->get();
    

    那肯定是不行的对吧?

    因为我们没办法正确区分哪个是出发站点的信息,哪个是到达站点的信息,这个时候,别名就派上用场了

    		Trains::join("lines","lines.id","=","trains.lines_id")
                ->join("stations as stations_from","stations_from.id","=","lines.from_station_id")
                ->join("stations as stasions_to","stasions_to.id","=","lines.to_station_id")
                ->get();
    

    这个样子我们就能正确判断哪个是出发站点的信息,哪个是到达站点的信息了,然后只需要稍微限制一下。就能得到我们限定的出发城市到目的城市里的线路了

    那么最终代码如下

    		Trains::join("lines","lines.id","=","trains.lines_id")
                ->join("stations as stations_from","stations_from.id","=","lines.from_station_id")
                ->join("stations as stasions_to","stasions_to.id","=","lines.to_station_id")
                ->select([
                    "trains.*",
                    "lines.*",
                ])
                ->where([
                        ["stations_from.city_id",$from],
                        ["stasions_to.city_id",$to],
                    ])
                ->get();
                /* select 表示你在前端要输出的数据有哪些 */
    
    展开全文
  • laravel的联表查询

    2020-06-02 18:22:01
    表查询的要求 联表要求至少得有2张表(除了自己连接自己,自联查询),并且还是存在关系的张表。 联表查询有哪几种方式? 联表查询一共有:内连接(inner)、左连接(left)、右连接(right)。 联表查询得步骤 ...

    联表查询的要求
    联表要求至少得有2张表(除了自己连接自己,自联查询),并且还是存在关系的两张表。
    联表查询有哪几种方式?
    联表查询一共有:内连接(inner)、左连接(left)、右连接(right)。
    联表查询得步骤
    ①创建迁移文件
    ②相继编写2个迁移文件的代码
    ③执行生成数据表的迁移文件
    ④创建填充器文件(可以将多个数据表的写入操作写在一起)
    ⑤编写填充器文件
    ⑥需要执行填充器文件
    ⑦在控制器中使用
    DB门面 -> join联表方式名称小驼峰写法(关联的表名,表1的字段,运算符,表2的字段)

    展开全文
  • laravel——联表查询

    2020-06-02 20:24:07
    表查询 联表要求至少有2张表(除了自己连接自己),并且还得存在关系的张表 例如:可以建立2张表,文章表、作者表 文章表(article) id 主键 article_name 文章名称 author_id 作者(作者id) 作者表(author)...

    联表查询

    联表要求至少有2张表(除了自己连接自己),并且还得存在关系的两张表

    例如:可以建立2张表,文章表、作者表

    文章表(article)

    id 主键 article_name 文章名称 author_id 作者(作者id)

    作者表(author)

    id 主键 author_name 作者名称

    案例:要求查询数据表(文章表、作者表),查询出文章的信息包含了作者名称

    1、创建迁移文件

    #php artisan make:migration create_article_table
    #php artisan make:migration create_author_table
    

    2、相继编写迁移文件代码

    • 文章表的迁移
    public function up()
        {
            Schema::create('article', function (Blueprint $table) {
                $table->increments('id');
                $table->string('article_name',100);
    			$table->tinyInteger('author_id')->notNull();
            });
        }
    public function down()
        {
            Schema::dropIfExists('article');
        }
    
    • 作者表的迁移
    public function up()
        {
            Schema::create('author', function (Blueprint $table) {
               $table->increments('id');
               $table->string('author_name',20)->notNull();
             
            });
        }
    public function down()
        {
            Schema::dropIfExists('author');
        }
    

    3、执行迁移文件

    #php artisan migrate
    

    4、模拟填充数据(通过填充器实现)

    • 创建填充器文件(可以将多个数据表写入操作写在一起)
    #php artisan make:seeder ArticleAndAuthourTableSeeder
    
    • 编写数据模拟的代码
    public function run()
        {
            //
    		DB::table('article')->insert([
    			[
    					'article_name'		=>'我有很多小胡你要吗',
    					'author_id'			=>rand(1,3)
    			],
    			[
    					'article_name'		=>'丢掉也不给你',
    					'author_id'			=>rand(1,3)
    			],
    			[
    					'article_name'		=>'想多了',
    					'author_id'			=>rand(1,3)
    			],
    		]);
    		DB::table('author')->insert([
    			[
    				'author_name'=>'人民网',
    			],
    			[
    				'author_name'=>'和讯网',
    			],
    			[
    				'author_name'=>'网易',
    			],
    		]);
        }
    
    • 执行填充器文件
    #php artisan db:seed --class=ArticleAndAuthourTableSeeder
    

    例如:查询id为1的文章,其结果为1,我有很多小花你要吗 人民网

    分析:

    数据来源:文章表、作者表

    表1:文章表 t1(跟在from关键词后面的表)

    表2:作者表 t2(跟在join关键词后面的表)

    关联条件:t1.author_id=t2.id

    联表方式:左外连接

    原始的sql语句

    select t1.id,t1.article_name,t2.author_name from article as t1 join author as t2 on t1.author_id=t2.id;
    

    将上述语法改成链式操作

    语法:

    DB门面/模型->join联表方式名称(关联的表名,表1的字段,运算符,表2的字段)
    

    a.创建需要的路由

    //联表查询
    Route::get('home/test/test31','TestController@test31');
    

    b.创建响应的方法:实现将SQL语句该写成链式操作实现刚才的案例

    public function test31(){
    	//select t1.id,t1.article_name,t2.author_name from article
    	//as t1 join author as t2 on t1.author_id=t2.id;
    	//查询
    	$data=DB::table('article as t1')->select('t1.id','t1.article_name','t2.author_name')->leftjoin('author as t2','t1.author_id','=','t2.id')->get();
    	dd($data);
    }
    
    展开全文
  • laravel框架联表查询

    2020-06-02 08:31:00
    前面我们进行过数据的迁移与填充,而如果我们想实现在个表数据进行关联的查询这时候我们就需要用到联表查询; 联表查询的方式有多种: 分为三种连接查询: 1.内连接 使用比较运算符(包括=、>、<、<>...
  • laravel利用联合查询个数据按照某一字段排序 在项目中需要把的数据按照时间进行排序,需要利用mysql的查询 代码: $tourist = Tourist::query() -&amp;gt;select('id', 'name as customer_...
  • laravel join 关联查询

    千次阅读 2019-04-26 09:38:21
    1、两表关联 $fbaInventoryTb = (new \App\Model\Amz\Fba\InventoryReport)->getTable(); $productTb = (new \App\Model\Amz\Product)->getTable(); $twInventoryTb = (new \App\Model\T...
  • 关于Laravel的多表查询方法

    万次阅读 2015-12-18 12:05:40
    之前写了一个遇到了多表查询的问题,现在就来写一下: $data = DB::table('stu_searches') //将张表拼接起来 ->join('stu_msgs', function($join) { $join->on('stu_searches.stu_id', '=', 'stu_...
  • Laravel框架中连表查询

    千次阅读 2020-09-08 09:54:05
    表查询 联表要求至少得有2张表(除了自己连接自己),并且还是存在关系的张表。 例如:可以建立2张表:文章表、作者表。 文章表(article): Id 主键 Article_name 文章名称 Author_id 作者(作者id...
  • <p>This is the query but I don't know how to implement it in Laravel <pre><code>SELECT orders. * , payments. * FROM orders INNER JOIN payments ON orders.user_id = payments.userID WHERE orders.user_...
  • 要求至少有(除了自己连接自己,自联查询),而且还是存在关系的。 例如:可以建立:文章、作者 文章(article): id 主键 article_name 文章名称,varchar(50),notnull author_id ...
  • 我在结果中显示了条记录,尽管该只有一条 .$side_messages = Message::orderBy('id' , 'desc') ->where('to_id' , Auth::id())->orWhere('from_id' , Auth::id())->first(); dd($side_messages);结果...
  • <p>I'm having problems getting the SUM of a certain field from two tables. <p>So to start things off, here's my query. <pre><code> //Getting of Cost of Goods Sold (Menus) $totalMenuCost = DB::...
  • 在用laravel框架使用关联查询时,如果关联的使用了假删除,则会很容易忽略这个deleted_at字段的存在。 因此,有种方法可以避免: 1.加上deleted_at字段是否为null的条件 2.使用实例查询
  • Laravel DB类两表第二个表关联条件多条时显示一条 就是以第一个表为主表,查询出的数据以第一个表为准。 我们假设有两个表,A表,B表 A表的结构数据如下 id name 1 张三 2 李四 3 赵五 B表的结构数据...
  • 引言在数据库的设计时,对不同的功能进行切分,分割为不同的进行存储。在业务逻辑中,再将需要连接的数据进行整合输出。今天我们说一说,在Laravel中,如何关联模型,以及制定返回列,以精简返回数据。学习时间...
  • laravel CURD 查询构造器

    2017-09-29 10:15:39
    插入 更新   删除   查询 Get所有数据 First 结果集中的第一条 Where whereraw条件 Pluck 结果集中指定的字段 ...Select 指定查询字段 ...每次查询两条 停止可用   聚合函数
  • <p>I have a table which is <code>Order</code> and <code>Product</code> <li>orders table: id, order_name <li>products table: id, orders_id, product_name ...<p>In my model: <code>Order</code> can...
  • Laravel Eloquent 中使用 join 关联查询,如果有名称相同的字段,如 id,那么它的值会默认被后来的同名字段重写,返回不是期望的结果。例如以下关联查询: PHP $priority = Priority::rightJoin('touch', ...
  • laravel查询字段相同的问题

    千次阅读 2018-10-25 10:01:30
    查询或多过程中 若遇到条件为字段相同或者不同时 往往会出现很多问题 例如中含有user_name字段和nickname个字段: User::where('user_name','=','nickname')-&gt;get(); 这种方法不可取 应采用 ...
  • php中文网最新课程每日17点准时技术干货分享在实际开发中经常用到分库分表,比如用户分成 100 张,那么这个时候查询数据需要设置分表,比如 Laravel 的 Model 类中提供了 setTable 方法:/** * Set the table ...
  • Laravel5.1 模型--查询

    2019-10-06 15:17:41
    天病了。。一直没写笔记,今儿个来看看Model在实际开发中的一些简单使用,首先 我们来为今天的学习做个铺垫,也当做复习了 准备工作 1、生成 ...use Illuminate\Database\Schem...
  • Laravel5.8 模型内联一对一查询数据 举例,有user(用户)和role(角色), user role 既然是模型内联查询,当然要有User的MODEL类文件和Role的Role的类文件,MODEL类文件里面的功能根据自己需要...
  • laravel实现一对多关联模型数据查询 我们目前有users和posts,users存放的是作者信息,比如作者名称等 posts和users关联的字段是author_id 现在我们要在展示文章数据的时候同时展示作者名称 那么,...
  • 连接查询指的是将或多张表关联到一起进行查询,获取一个的行与另一个的行匹配的数据。常见的连接查询包括内连接(等值连接)、左(外)连接、右(外)连接和交叉连接(完全连接)等。 我们将用户...
  • 连接查询指的是将或多张表关联到一起进行查询,获取一个的行与另一个的行匹配的数据。常见的连接查询包括内连接(等值连接)、左(外)连接、右(外)连接和交叉连接(完全连接)等。下面这张图形象的展示...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

laravel两表查询