在 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 中抽取表格的一些行的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Windows 命令提示符在 Laravel 中运行 PHPUnit
如何使用 laravel 和 mysql 数据库获取数组中的数组?