eql连表查询with

1.第一个问题。
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
public function phone(){
return $this->hasOne('App\Phone', 'foreign_key', 'local_key');
}
}
如果我需要local_key 来作为判断条件的话,那么foreign_key我需要怎么填写?
是return $this->hasOne('App\Phone', '', 'user_id');吗?
2.第二个问题。
比如我的的News表里面有多个tags,如果我的tags_id是以字符串逗号相隔的形式来存储属性的,那么,我如果用elq来获取 某个文章拥有的所有属性,我应该怎么查询? 或者说我的news对应多个属性值,我应该如何存储。。

麻烦了教主。。

BallOon

3.如果我需要写连表查询的话,join或者leftjoin是否在orm上面也能OK?如果没有的话,能否给一个,比较有代表性的连表查询的列子(虽然我知道连表查询貌似用one to one 类似写),我在ELQ BUilder 上面只看到了joinWhere 这样一个。

BallOon

额,我的问题可能比较傻,希望教主也能帮忙解答下。。谢谢

JellyBool
return $this->hasOne('App\Phone', 'user_id');

news 和 tags 多对多,建一张关联表

BallOon 回复 JellyBool

那如果我是比如我的新闻有多个属性,我存到数据库是用的varchar 比如tags_id字段为1,2,3的数据?这时候,如果我用with或者wherehas来查询的话,我怎么能查询到多个属性值?

JellyBool 回复 BallOon

whereIn 就可以了。

BallOon 回复 JellyBool

whereIn貌似在orm里面不能使用吧? 必须要DB来操作?

JellyBool 回复 BallOon

为什么可以?我貌似一直都有用

BallOon 回复 JellyBool

假如说我现在的news表有条数据tags_id的值为1,2,3 ,tags表的字段为 id,name ,那么如果我要用比如说News::来查询 new表里的tags_id为1,2,3的值,我怎么去处理?

JellyBool 回复 BallOon
Tag::whereIn('id',$tagId)->get();
BallOon 回复 JellyBool

News::whereHas(‘tags’,function($q){
$q->whereIn(‘id’,‘news.cate_id’);
})->get();

BallOon 回复 JellyBool

News::whereHas(‘tags’,function($q){
$q->whereIn(‘id’,‘news.cate_id’);
})->get();

2017laravel 回复 BallOon

。。。。。。。。。。。。

BallOon

我想查出来的数据格式是:

news=[
‘id’=>1,
‘ttile’=>‘hello’,
‘tags_id’=>‘1,2,3’
‘tags’=>[
‘0’=>[
‘id’=>‘1’,
‘name’=>‘one’
] ,
‘1’=>[
‘id’=>‘2’,
‘name’=>‘two’
] ,
‘2’=>[
‘id’=>‘3’,
‘name’=>‘three’
] ,
]
];

BallOon

Echo 2017/8/1 14:23:54
我现在有个news表 ,比如我news表有很多的tags 属性, 我在news表存的tags_id 是varchar,

那么news 表里的tags_id = 1,2,3 那如果这条数据怎样用elq来查询呢?

BallOon

lists=News::paginate(5);foreach(lists =News::paginate(5); foreach(lists as k =>&v){
tags=explode(,,tags = explode(',',v[‘tags_id’]);
v[tags]=Tags::whereIn(id,v['tags'] = Tags::whereIn('id',tags)->get([‘id’,‘tag_name’]);
}
return $lists;
我最后是这样得出数据的 ,但是这样的话 有没有哪里可以优化的地方呢