php - 有数组时如何进行查询

标签 php mysql laravel

我有三个表:client、project 和 client_project。

我想在一个 View 中显示一个客户的所有项目。

代码解释如下:

<?php

public function editClient($id)
{
    $client = Client::find($id);

    // I get an array with client_id and project_id of the clients 
    // which is the same I pass in the URL.
    $client_project = DB::table('client_project')->where('client_id',$id)->get();

    // return view('cms.public.views.clients.editclient')->withClient($client);
}

现在我想在表 projects 的字段 id 与 $client_project 数组中的 project_id 值相同时显示项目名称。

如果它只有一个值,下面是如何做到这一点的示例,也许可以提供帮助。

public function editClient($id) 
{
    $client = Client::find($id);
    $client_project = DB::table('client_project')->where('client_id',$id)->first()->project_id;
    $project = DB::table('projects')->where('id',$client_project)->first();

    return $project;
}

最佳答案

使用一对多关系。

在 Client.php 模型中

public function projects()
{
   return $this->belongsTo('App\Project', 'client_id');
}

在你的 Project.php 模型中

public function client()
{
   return $this->hasMany('App\Client', 'client_id');
}

现在打电话

$client_project = Client::find($id)->projects;

您将在此处获得详细信息 https://laravel.com/docs/5.5/eloquent-relationships#one-to-many

关于php - 有数组时如何进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47039549/

相关文章:

python - 无法在 Windows 7 64 位上使用 django 1.8.2 安装 MySQL 5.5

mysql - 如何从终端连接到 AWS mysql 数据库实例

php - 图像文件未存储在 laravel 项目中

php - 尝试使用 envato api 使用 php 和curl 进行简单搜索

php - 打开文件,替换字符串保存在不同的目录

mysql - 为什么连接到 MySQL 服务器这么慢?

PHP 变量声明在 Laravel 5.4 中不起作用

javascript - 如何在 View 中显示特定的 laravel 验证错误,而不是全部

javascript - 尝试通过 AJAX 将 JS 数组传递给 PHP 脚本

php - 如何在 doctrine2 中找到实体