fastadmin的关联查询如何书写

img

img

img

img


想请问一下,fastadmin的那个关联查询是怎么写的,想通过项目ID确定联系人姓名,让业主栏显示联系人姓名

该回答引用ChatGPT:对于FastAdmin的关联查询,你可以通过以下步骤来实现通过项目ID确定联系人姓名,并在业主栏显示联系人姓名:

  1. 在FastAdmin的模型文件中,定义两个模型之间的关联关系。假设你有两个模型:Project(项目)和Contact(联系人),并且Project模型中有一个外键字段contact_id,关联到Contact模型的主键字段id。在Project模型中添加以下代码:
public function contact()
{
    return $this->belongsTo('app\common\model\Contact', 'contact_id', 'id');
}
  1. 在业主列表页的控制器文件中,获取项目列表的同时,通过关联关系获取联系人姓名。在列表方法中添加以下代码:
public function index()
{
    $projectList = Project::with('contact')->select();
    $this->assign('projectList', $projectList);
    return $this->fetch();
}
  1. 在业主列表页的视图文件中,通过关联关系获取联系人姓名并显示在业主栏。在列表页的表格中添加以下代码:
<th>业主</th>
<!-- 其他表头字段 -->
<!-- ... -->
<tbody>
    <?php foreach ($projectList as $project): ?>
        <tr>
            <td><?php echo $project->contact->name; ?></td>
            <!-- 其他字段 -->
            <!-- ... -->
        </tr>
    <?php endforeach; ?>
</tbody>

通过以上步骤,你可以实现通过项目ID确定联系人姓名,并在业主栏显示联系人姓名的功能。请根据你的实际情况进行相应的调整和修改。

如果业主信息存放在sql种,你或许可以试一试mysql拓展的方式:

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

$projectID = "KHLXR_1000000001";

$sql = "SELECT project.project_id, contact.contact_name
        FROM project
        JOIN contact ON project.contact_ID = contact.contact_ID
        WHERE project.project_id = '$projectID'";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $contactName = $row["contact_name"];
        echo "业主姓名: " . $contactName;
    }
} else {
    echo "没有找到相关的联系人信息";
}
$conn->close();
?>