高光應 發表於 2019-5-20 17:06:00

在 Laravel 中使用 MongoDB

<div class="pull-left">&nbsp;可参考:https://blog.csdn.net/weixin_38682852/article/details/80840678</div>
<ul>
<li>环境准备<ol>
<li>安装 MongoDB</li>
<li>安装 PHP-MongoDB 扩展</li>
</ol></li>
</ul>
<div data-unique="94a9ad">&nbsp;</div>
<h2>安装 Laravel-MongoDB</h2>
<ul>
<li>推荐组件</li>
</ul>
<pre class="language-php"><code class="language-php">composer <span class="token keyword">require jenssegers<span class="token operator">/mongodb</span></span></code></pre>
<ul>
<li>注册服务</li>
</ul>
<pre class="language-php"><code class="language-php"><span class="token scope">Jenssegers<span class="token punctuation">\Mongodb<span class="token punctuation">\MongodbServiceProvider<span class="token punctuation">::<span class="token keyword">class<span class="token punctuation">,</span></span></span></span></span></span></code></pre>
<ul>
<li>添加 Facades</li>
</ul>
<pre class="language-php"><code class="language-php"><span class="token single-quoted-string string">'Mongo'   <span class="token operator">=<span class="token operator">&gt; <span class="token scope">Jenssegers<span class="token punctuation">\Mongodb<span class="token punctuation">\MongodbServiceProvider<span class="token punctuation">::<span class="token keyword">class<span class="token punctuation">,</span></span></span></span></span></span></span></span></span></code></pre>
<ul>
<li>修改数据库配置文件 config/database.php 中</li>
</ul>
<pre class="language-php"><code class="language-php">添加 MongoDB 的数据库的信息<span class="token punctuation">:
<span class="token single-quoted-string string">'mongodb' <span class="token operator">=<span class="token operator">&gt; <span class="token punctuation">[   
      <span class="token single-quoted-string string">'driver'   <span class="token operator">=<span class="token operator">&gt; <span class="token single-quoted-string string">'mongodb'<span class="token punctuation">,   
      <span class="token single-quoted-string string">'host'   <span class="token operator">=<span class="token operator">&gt; <span class="token single-quoted-string string">'localhost'<span class="token punctuation">,   
      <span class="token single-quoted-string string">'port'   <span class="token operator">=<span class="token operator">&gt; <span class="token number">27017<span class="token punctuation">,   
      <span class="token single-quoted-string string">'database' <span class="token operator">=<span class="token operator">&gt; <span class="token single-quoted-string string">'mydb'<span class="token punctuation">,   
      <span class="token single-quoted-string string">'username' <span class="token operator">=<span class="token operator">&gt; <span class="token single-quoted-string string">''<span class="token punctuation">,   
      <span class="token single-quoted-string string">'password' <span class="token operator">=<span class="token operator">&gt; <span class="token single-quoted-string string">''<span class="token punctuation">,
<span class="token punctuation">]<span class="token punctuation">,

<span class="token single-quoted-string string">'default' <span class="token operator">=<span class="token operator">&gt; <span class="token function">env<span class="token punctuation">(<span class="token single-quoted-string string">'DB_CONNECTION'<span class="token punctuation">, <span class="token single-quoted-string string">'mysql'<span class="token punctuation">)<span class="token punctuation">,

改成<span class="token punctuation">:

<span class="token single-quoted-string string">'default' <span class="token operator">=<span class="token operator">&gt; <span class="token function">env<span class="token punctuation">(<span class="token single-quoted-string string">'DB_CONNECTION'<span class="token punctuation">, <span class="token single-quoted-string string">'mongodb'<span class="token punctuation">)<span class="token punctuation">,</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<div data-unique="9db46a">&nbsp;</div>
<h2>使用篇</h2>
<div data-unique="38f869">&nbsp;</div>
<h3><code>查询构造器</code></h3>
<pre class="language-php"><code class="language-php"><span class="token comment">// 建立一个 UserController.php 控制器
php artisan make<span class="token punctuation">:controller UserController
参考代码<span class="token punctuation">:
<span class="token keyword">use <span class="token package">DB<span class="token punctuation">;   <span class="token comment">//引用数据库

<span class="token keyword">class <span class="token class-name">MongoController <span class="token keyword">extends <span class="token class-name">Controller<span class="token punctuation">{
    pubulic <span class="token keyword">function <span class="token function">index<span class="token punctuation">(<span class="token punctuation">)<span class="token punctuation">{
      <span class="token scope">DB<span class="token punctuation">::<span class="token function">collection<span class="token punctuation">(<span class="token single-quoted-string string">'users'<span class="token punctuation">)               <span class="token comment">//选择使用users集合
            <span class="token operator">-<span class="token operator">&gt;<span class="token function">insert<span class="token punctuation">(<span class="token punctuation">[                        <span class="token comment">//插入数据
                      <span class="token single-quoted-string string">'name'<span class="token operator">=<span class="token operator">&gt;<span class="token single-quoted-string string">'tom'<span class="token punctuation">,
                      <span class="token single-quoted-string string">'age'   <span class="token operator">=<span class="token operator">&gt;   <span class="token number">18
                  <span class="token punctuation">]<span class="token punctuation">)<span class="token punctuation">;
    <span class="token punctuation">}

    <span class="token variable">$res <span class="token operator">= <span class="token scope">DB<span class="token punctuation">::<span class="token function">collection<span class="token punctuation">(<span class="token single-quoted-string string">'users'<span class="token punctuation">)<span class="token operator">-<span class="token operator">&gt;<span class="token function">all<span class="token punctuation">(<span class="token punctuation">)<span class="token punctuation">;<span class="token comment">//查询所有数据
    <span class="token function">dd<span class="token punctuation">(<span class="token variable">$res<span class="token punctuation">)<span class="token punctuation">;                                          <span class="token comment">//打印数据
<span class="token punctuation">}
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<ul>
<li>设置一个访问路由,然后测试</li>
</ul>
<blockquote>
<p>如果你没有修改默认的数据库配置 (默认还是 MySQL), 那么你在使用 MongoDB 的时候就要指定使用 MongoDB 了</p>
</blockquote>
<ul>
<li>例如:</li>
</ul>
<pre class="language-php"><code class="language-php"><span class="token keyword">use <span class="token package">DB<span class="token punctuation">;   <span class="token comment">//引用数据库

<span class="token keyword">class <span class="token class-name">MongoController <span class="token keyword">extends <span class="token class-name">Controller<span class="token punctuation">{
    pubulic <span class="token keyword">function <span class="token function">index<span class="token punctuation">(<span class="token punctuation">)<span class="token punctuation">{
      <span class="token scope">DB<span class="token punctuation">::<span class="token function">connection<span class="token punctuation">(<span class="token single-quoted-string string">'mongodb'<span class="token punctuation">)       <span class="token comment">//选择使用mongodb
            <span class="token operator">-<span class="token operator">&gt;<span class="token function">collection<span class="token punctuation">(<span class="token single-quoted-string string">'users'<span class="token punctuation">)         <span class="token comment">//选择使用users集合
            <span class="token operator">-<span class="token operator">&gt;<span class="token function">insert<span class="token punctuation">(<span class="token punctuation">[                        <span class="token comment">//插入数据
                      <span class="token single-quoted-string string">'name'<span class="token operator">=<span class="token operator">&gt;<span class="token single-quoted-string string">'tom'<span class="token punctuation">,
                      <span class="token single-quoted-string string">'age'   <span class="token operator">=<span class="token operator">&gt;   <span class="token number">18
                  <span class="token punctuation">]<span class="token punctuation">)<span class="token punctuation">;
    <span class="token punctuation">}

    <span class="token variable">$res <span class="token operator">= <span class="token scope">DB<span class="token punctuation">::<span class="token function">connection<span class="token punctuation">(<span class="token single-quoted-string string">'mongodb'<span class="token punctuation">)<span class="token operator">-<span class="token operator">&gt;<span class="token function">collection<span class="token punctuation">(<span class="token single-quoted-string string">'users'<span class="token punctuation">)<span class="token operator">-<span class="token operator">&gt;<span class="token function">all<span class="token punctuation">(<span class="token punctuation">)<span class="token punctuation">;   <span class="token comment">//查询所有数据
    <span class="token function">dd<span class="token punctuation">(<span class="token variable">$res<span class="token punctuation">)<span class="token punctuation">;                                          <span class="token comment">//打印数据
<span class="token punctuation">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<blockquote>
<p>有关查询构造器的使用和 MySQLi 的方式是一样的,参照&nbsp;<code>Laravel 文档查询构造器</code></p>
</blockquote>
<div data-unique="f610d9">&nbsp;</div>
<h3><code>Eloquent 模型</code></h3>
<ul>
<li>在 config/app.php 配置文件中配置 MongoDB 的 Eloquent 类的别名</li>
</ul>
<pre class="language-php"><code class="language-php"><span class="token single-quoted-string string">'Moloquent' <span class="token operator">=<span class="token operator">&gt; <span class="token single-quoted-string string">'Jenssegers\Mongodb\Eloquent\Model'<span class="token punctuation">,</span></span></span></span></span></code></pre>
<ul>
<li>新建一个 User.php 的 Model 类</li>
</ul>
<pre class="language-php"><code class="language-php">php artisan make<span class="token punctuation">:model User</span></code></pre>
<ul>
<li>参考代码</li>
</ul>
<pre class="language-php"><code class="language-php"><span class="token php language-php"><span class="token delimiter important">&lt;?php
    <span class="token keyword">namespace <span class="token package">App<span class="token punctuation">;
    <span class="token keyword">use <span class="token package">Moloquent<span class="token punctuation">;
    <span class="token keyword">use <span class="token package">DB<span class="token punctuation">;

    <span class="token keyword">class <span class="token class-name">Users <span class="token keyword">extends <span class="token class-name">Moloquent<span class="token punctuation">{   
      <span class="token keyword">protected <span class="token variable">$connection <span class="token operator">= <span class="token single-quoted-string string">'mongodb'<span class="token punctuation">;<span class="token comment">//库名   
      <span class="token keyword">protected <span class="token variable">$collection <span class="token operator">= <span class="token single-quoted-string string">'users'<span class="token punctuation">;   <span class="token comment">//文档名   
      <span class="token keyword">protected <span class="token variable">$primaryKey <span class="token operator">= <span class="token single-quoted-string string">'_id'<span class="token punctuation">;    <span class="token comment">//设置id   
      <span class="token keyword">protected <span class="token variable">$fillable <span class="token operator">= <span class="token punctuation">[<span class="token single-quoted-string string">'id'<span class="token punctuation">, <span class="token single-quoted-string string">'name'<span class="token punctuation">, <span class="token single-quoted-string string">'phone'<span class="token punctuation">]<span class="token punctuation">;<span class="token comment">//设置字段白名单
    <span class="token punctuation">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<ul>
<li>在 UserController.php 控制器中这样使用</li>
</ul>
<pre class="language-php"><code class="language-php"><span class="token php language-php"><span class="token delimiter important">&lt;?phpnamespace
    <span class="token package">App<span class="token punctuation">\Http<span class="token punctuation">\Controllers<span class="token punctuation">;
    <span class="token keyword">use <span class="token package">App<span class="token punctuation">\Users<span class="token punctuation">;    <span class="token comment">//引入Users模型

    <span class="token keyword">class <span class="token class-name">MongoController <span class="token keyword">extends <span class="token class-name">Controller<span class="token punctuation">{
      <span class="token keyword">public <span class="token keyword">function <span class="token function">index<span class="token punctuation">(<span class="token punctuation">)<span class="token punctuation">{
      <span class="token scope">Users<span class="token punctuation">::<span class="token function">create<span class="token punctuation">(<span class="token punctuation">[                      <span class="token comment">//插入数据
            <span class="token single-quoted-string string">'id'   <span class="token operator">=<span class="token operator">&gt;<span class="token number">1<span class="token punctuation">,
            <span class="token single-quoted-string string">'name'   <span class="token operator">=<span class="token operator">&gt;<span class="token single-quoted-string string">'tom'<span class="token punctuation">,
            <span class="token single-quoted-string string">'phone'<span class="token operator">=<span class="token operator">&gt;<span class="token number">110<span class="token punctuation">]<span class="token punctuation">)<span class="token punctuation">;
      <span class="token punctuation">}

      <span class="token function">dd<span class="token punctuation">(<span class="token scope">Users<span class="token punctuation">::<span class="token function">all<span class="token punctuation">(<span class="token punctuation">)<span class="token punctuation">)<span class="token punctuation">;          <span class="token comment">//查询并打印数据</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>

</div>
<div id="MySignature" role="contentinfo">
    纵然世间炎凉百态!我自依旧初心不改!!<br><br>
来源:https://www.cnblogs.com/phpk/p/10895165.html
頁: [1]
查看完整版本: 在 Laravel 中使用 MongoDB