gpt4 book ai didi

php - 在 laravel 中使用动态创建的 anchor href 进行搜索

转载 作者:行者123 更新时间:2023-11-29 11:41:13 28 4
gpt4 key购买 nike

我想包含一个动态创建的 anchor ,该 anchor 链接到显示该公司所有用户的搜索页面。用户可以隶属于多家公司。该信息是从 mysql 数据库示例中提取的:

约翰·多伊隶属于:

  • 百事可乐公司
  • 冷饮公司
  • 运动饮料公司

约翰·多伊隶属于:

<a href="search/useraffiliation1"> Pespi Company</a>
<a href="search/useraffiliation2"> Cold Drinks Inc Company</a>
<a href="search/useraffiliation3"> Sports Drinks Company</a>

1.执行此操作的最佳方法是什么。

2.构建数据库的最佳方式是什么。我应该为每个从属关系使用一列还是将所有从属关系放在一个列中。

最佳答案

编辑:我刚刚意识到我是在回复评论,并没有真正回答您原来的问题,所以我更新了下面的示例。

如果您完全使用 Laravel 和 artisan 来构建数据库并跟踪迁移,那么您需要对 3 个表执行以下操作。您希望隶属关系表保存用户的 ID 和公司的 ID。

首先,在命令行中创建 3 个数据库迁移:

php artisan make:migration create_users_table --table="users"
php artisan make:migration create_companies_table --table="companies"
php artisan make:migration create_affiliations_table --table="affiliations"

您的/database/migrations 文件夹中现在将有 3 个迁移文件。

文件将如下所示:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTableUsers extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->string('email')->unique();
$table->string('password', 60);
//more fields @see https://laravel.com/docs/master/migrations#creating-columns
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
});
}

public function down()
{
Schema::drop('users');
}
}

--

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTableCompanies extends Migration
{
public function up()
{
Schema::create('companies', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->string('name', 100);
//more fields @see https://laravel.com/docs/master/migrations#creating-columns
$table->timestamps();
$table->softDeletes();
});
}

public function down()
{
Schema::drop('companies');
}
}

--

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTableAffiliations extends Migration
{
public function up()
{
Schema::create('affiliations', function (Blueprint $table) {
$table->integer('user_id')->unsigned();
$table->integer('company_id')->unsigned();
$table->primary(['user_id', 'company_id']);
});
}

public function down()
{
Schema::drop('affiliations');
}
}

现在在控制台中再次运行 artisan 以创建表。

php artisan migrate

此时,当您查询数据库时,您有多种选择。例如,原始 SQL 查询可能如下所示:

SELECT c.* FROM affiliations a JOIN companies c ON (a.company_id=c.id) WHERE a.user_id=1;

SELECT u.* FROM affiliations a JOIN users u ON (a.user_id=u.id) WHERE a.company_id=1;

但是,由于您使用的是 Laravel,所以使用 eloquent 模型可能会更好。我喜欢在 App/Db 文件夹中创建 Db 模型。例如,/App/Db/Companies.php 可能如下所示。

<?php 

namespace App\Db;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Companies extends Model {

use SoftDeletes;

public function affiliations() {
return $this->hasMany('App\Db\Affiliations', 'company_id', 'id');
}
}

这只是一个示例,未经测试。

引用https://laravel.com/docs/master/eloquent-relationships#defining-relationships

您也可以创建其他数据库表模型(从属关系和用户),并且在您的应用程序中,查询可能如下所示:

class CompanyController extends Controller {

public function search($id) {
$company = Companies::find($id);
$company->load('affiliations.users');

foreach ($company->affiliation as $aff) {
echo $aff->user->name;
}
}
}

您也可以在其中找到与该公司 ID 有隶属关系的用户时进行切换。有关查询关系的更多信息:https://laravel.com/docs/master/eloquent-relationships#querying-relations

有多种方法可以实现您想要的结果,因此请认真阅读这些 Eloquent 关系!对于如此简单的事情来说,似乎需要做很多工作,但是当您构建更大的应用程序时,它非常方便。

关于您原来的问题,其路径可能如下所示:

Route::get('/search/company/{id}', 'CompanyController@search');

关于php - 在 laravel 中使用动态创建的 anchor href 进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756823/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com