我有这个查询,当我在phpmyadmin中运行它时返回的是我想要的

SELECT c.category_id, c.category_name, sc.sub_cat_id, sc.sub_cat_name, dsc.dual_sub_cat_id, dsc.dual_sub_cat_name
FROM category c
JOIN sub_category AS sc
JOIN dual_sub_category AS dsc


我现在想在Laravel查询中编写它,我已经尝试过了

$cat_display = DB::table('category')
    ->join ('sub_category')
    ->join ('dual_sub_category')
    ->get();


错误是


  ErrorException:缺少Illuminate \ Database \ Query \ Builder :: join()的参数2


据我了解该错误,据说我还需要在两个联接上都添加ON子句,但我不想这样做,因为我没有按什么来匹配它们。

我只想从这3个表中查询和显示此字段。没有ONWHERE子句是否可能?

最佳答案

您可以通过Laravel关系来做到这一点:https://laravel.com/docs/5.3/eloquent-relationships

首先,创建一个Category模型。

然后在Category模型内定义两个关系,如下所示。

class Category extends Model
{
    /**
     * @var string
     */
    protected $table = 'category';

    /**
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function subCategory()
    {
        return $this->hasMany(SubCategory::class, 'category_id', 'category_id');
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function dualSubCategory()
    {
        return $this->hasMany(DualSubCategory::class, 'category_id', 'category_id');
    }
}


注意:SubCategoryDualSubCategory是模型。

在Controller中,您的功能使用以下代码。

$cat_display = Category::with(['subCategory','dualSubCategory'])->get()


让我知道您是否在这里遇到任何问题。

关于mysql - 从Laravel中的三个表中选择,不指定ON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41280550/

10-15 23:13
查看更多