想比较laravel中不同表的两列

Posted

技术标签:

【中文标题】想比较laravel中不同表的两列【英文标题】:Want to compare two columns of different table in laravel 【发布时间】:2021-08-27 15:43:21 【问题描述】:

我想比较两个不同表中的两列,我在 Model Attrition_correlators 中有一个名为“Features”的列,在 Membersdetail 中有另一个“Topcorrelators”。 由于我是 laravel 的新手,我不确定如何获取值并比较这两个值。 这是我的代码:

控制器.php

public function show(Memberdetails $Memberdetail, Attrition_correlators $Attrition_correlation_list)
    
        
        return view('admin.members.Detailspage',compact('Memberdetail','Attrition_correlation_list'));
    

 <div class="card-body p-0">
    <table class="table table-striped">
      @foreach(explode(',', $Memberdetail->Topcorrelators) as $row)
      <tr>
        <td>
           $row 
        </td>
         @if($Attrition_correlation_list->Features == $Memberdetail->Topcorrelators)
        <td>
          1
        </td>
        @else
        <td>
          0
        </td>
        @endif
   </tr>
   @endforeach

我想将我得到的数据与“特征”中的值进行比较,如果它们匹配想要获得模型“Attrition_correlators”下的相关值。 谁能帮我解决这个问题! 提前致谢 下面是我得到的错误

【问题讨论】:

你能告诉我你为什么在你的控制器中使用$Attrition_correlators= new Attrition_correlators;$Attrition_correlation_list= $Attrition_correlators::all();吗?因为您在方法中将$Attrition_correlation_list 作为参数传递了 请出示您的Attrition_correlators 模特的桌子 public function up() Schema::create('attrition_correlators', function (Blueprint $table) $table->id(); $table->string('Features'); $ table->string('相关值'); $table->string('正/负相关'); $table->timestamps(); ); @MohammadHosseini 我正在尝试这就是我将其从原始代码中删除的原因 @MohammadHosseini 你能帮帮我吗...我已经更新了sn-p。请检查 【参考方案1】:

这是因为您获得了 Attrition_correlation_list 的集合。在这种情况下,您需要对其进行迭代以获取属性:

@foreach(explode(',', $Memberdetail->Topcorrelators) as $row)
    <tr>
        <td>
             $row 
        </td>
        @foreach($Attrition_correlation_list as $item)
            @if($item->Features == $row)
            ...
            @else
            ...
            @endif
        @endforeach
   </tr>
   @endforeach

您还需要编辑您的控制器,如下所示。因为你在$Attrition_correlation_list中传递了空值

public function show(Memberdetails $Memberdetail)
    
        $Attrition_correlation_list = Attrition_correlators::all();
        return view('admin.members.Detailspage',compact('Memberdetail','Attrition_correlation_list'));
    

【讨论】:

不,我在 Features 列值之间没有逗号,并且我已经尝试了上面的解决方案它对我不起作用给我同样的错误尝试获取非对象的属性“特征”(查看:C:\xampp\htdocs\Attrition_Test\resources\views\admin\members\Detailspage.blade.php) 当我试图从 Show() 只返回 $Attrition_correlation_list 时,它给了我空白数组 @prashant $Memberdetail 怎么样?它有价值吗?你能分享一个$Memberdetail对象的样本吗? 是的,所以我有资源控制器 MemberdetailController 并且我正在从表中获取所有值...现在单击时有带有 id 的列,它应该加载一个新视图,我想在其中显示详细信息那个特定的 id,现在我从成员表中获取值的这个表有列“Topcorrelators”现在我有第二个表,它是 Attrition_correlators,其中“Feature”列有所有带有值的 topcorrelators。现在我到底想检查特定 id 和 Features 的所有值是否匹配,如果它们匹配它应该显示它的值 这是我的 MemberdetailController 索引函数

以上是关于想比较laravel中不同表的两列的主要内容,如果未能解决你的问题,请参考以下文章

如何比较不同数据库中不同表的两列?

使用 Laravel 中的验证器检查两个表中两列的唯一性

如何根据 laravel eloquent orm 中的两列进行查询

laravel中独特的两列

显示来自两个不同表的两列之间的差异(比较表)

比较两个excel的两列并返回第三列