在 laravel 4 中抽取表格的一些行

Posted

技术标签:

【中文标题】在 laravel 4 中抽取表格的一些行【英文标题】:Pluck some rows of a table in laravel 4 【发布时间】:2015-07-06 19:13:23 【问题描述】:

我有一个包含

的主题表
id  name 

和包含

的语言表
id subject_id

和分表

id name 

最后是科目划分表(数据透视表)

id subject_id  division_id

现在主题表和语言表之间存在一对一的关系,主题表和分表之间存在多对多的关系,我只需要使用关系函数提取没有语言的主题表的主题

现在我只能得到Division Model中关系函数的主题表的语言如下

    public function langSubject ()

    return $this->belongsToMany('Subject' , 'subject_division','division_id','subject_id')
                ->join('lang_subject', 'lang_subject.subject_id' ,'=', 'subject.id')->get();


但是直到现在我不能只没有语言就得到主题

有什么建议吗?

【问题讨论】:

你的问题很不清楚。您需要更具体地说明您尝试通过哪个模型访问主题(没有相关语言)。如果我正确阅读了您的问题:您正在尝试查找没有定义关系的主题。这不是关系函数应该用于的事情,因为您实际上是在尝试解决其设计的相反问题。 首先,感谢 Jim 先生的评论,看我有一张表,其中包含所有科目,如(英语、数学、德语、科学 ....) Subject_division(我的数据透视表)中的 SubjectsToMany Divisions 和也存在表称为 lang_table 该表与主题表具有一对一的关系,这意味着该表将仅携带语言,例如(英语,德语)现在我只需要从没有(英语)的主题表中提取(数学,科学) ,德语)。 也许您可以将 whereIn 和 whereNotIn 与子查询 (***.com/questions/16815551/…) 一起使用。所以像 SELECT * FROM division inner join subject on ... where subject.id not in (SELECT subject_id from languages) 这样的查询 【参考方案1】:

您需要在 join 语句之后将子句 ->select('tableName1.fieldName1','tableName2.fieldName2','tableName3.fieldName3') 添加到您的语句中以获取 tableName.fieldName,您可能需要使用leftJoin 代替 join 来获取是否匹配的结果。

【讨论】:

【参考方案2】:

查看Eloquent relationship documentation -> 子标题“查询关系存在”。那里提到了 ::has 方法,你可以在时尚中使用它

Division::has('subject.lang', '<', 1)->get()

至少理论上是这样的。还没有需要它;-)

Laravel 4 也应该支持它。

【讨论】:

以上是关于在 laravel 4 中抽取表格的一些行的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 路由问题:自动重定向到根文件夹

如何从 Windows 命令提示符在 Laravel 中运行 PHPUnit

如何使用 laravel 和 mysql 数据库获取数组中的数组?

laravel中一些非常常用的php artisan命令

用 Python 开发的 PDF 抽取Excel表格 2.0版

laravel5.4安装的报错