You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel接入Jitsi会议报Undefined variable及where查询无结果求助

问题原因

1. 控制器查询逻辑错误

你当前的查询同时添加了user_id = 当前登录用户ID和meeting_id = 传入会议ID两个条件,但jitsimeetings表的user_id字段存储的是会议创建者的ID,参会的讲师、客户不是会议创建者的情况下,自然查不到对应记录,导致$jitsimeetings为空。
另外你使用了get()方法返回集合,而meeting_id作为会议唯一标识,本就只需要查询单条记录。

2. 视图变量作用域错误

你视图中的foreach循环为空逻辑,所有调用$meeting变量的代码都写在循环外部:

  • 如果$jitsimeetings为空集合,循环不会执行,$meeting变量根本不会被定义,直接触发Undefined variable: meeting报错
  • 就算$jitsimeetings有值,你也只能拿到集合最后一条记录的属性,逻辑完全不符合预期

修复方案

第一步:修改控制器代码

public function joinMeetup($meetingid){
    $userid = Auth::user()->id;
    
    // 移除不必要的user_id查询条件,用first()查询单条记录
    $meeting = JitsiMeeting::where('meeting_id', '=', $meetingid)->first();
    
    // 校验会议是否存在,如果需要校验参会权限,可以在这里加对应逻辑(比如检查当前用户是否在参会名单内)
    if(empty($meeting)) {
        // 找不到会议的处理逻辑,比如跳转到错误页提示会议不存在
        return redirect()->back()->withErrors('会议不存在或已过期');
    }
    
    return view('admin.jitsimeeting.jitsimeet', compact('meeting'));
}

第二步:修改视图代码

直接调用控制器传入的单个$meeting变量即可,不需要循环,同时给PHP输出的内容加引号避免JS语法错误:

<div class="container-fluid">
    <div id='meet'></div>
</div>
<script src='https://meet.jit.si/external_api.js'></script>
<!-- <script src='https://localhost/external_api.js'></script> -->
<script>

const domain = 'meet.jit.si';
const options = {
    roomName: '<?php echo $meeting->meeting_id; ?>',
    width: 1250,
    height: 700,
    parentNode: document.querySelector('#meet'),
    userInfo: {
            displayName: '<?php echo $meeting->meeting_title; ?>'
            
        },
    // jwt: '<jwt_token>',
    

    configOverwrite:{
            // doNotStoreRoom: true,
            // startVideoMuted: 0,
            startWithVideoMuted: true,
            startWithAudioMuted: true,
            // liveStreamingEnabled: true
            // desktopSharingFrameRate: {
            // min: 5,
            // max: 5
            // },
            enableWelcomePage: false,
            prejoinPageEnabled: false,
            enableSaveLogs: false,
            enableNoisyMicDetection: true
            // disableRemoteMute: false
            
        },
    interfaceConfigOverwrite: {
            // filmStripOnly: false,
            SHOW_JITSI_WATERMARK: false,
            SHOW_WATERMARK_FOR_GUESTS: false,
            SHOW_BRAND_WATERMARK: false,
            SHOW_POWERED_BY: false
            //  DEFAULT_REMOTE_DISPLAY_NAME: 'New User'
            // TOOLBAR_BUTTONS: []
        }
};
const api = new JitsiMeetExternalAPI(domain, options);
api.executeCommand('subject', '<?php echo $meeting->meeting_title; ?>');

</script>

内容的提问来源于stack exchange,提问作者imonDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 04:45:02