درود این مدال من با نام tag هستش :
class Tag extends Model
{
protected $fillable=['tag','foreign_id','usage'];
protected $casts=['tags'=>'array'];
public $timestamps=false;
public function TagSentences(){
return $this->whereUsage('sentence');
}
public function TagStartLetter($key){
return $this->where('tag', 'like', $key.'%');
}
public function TagWords(){
return $this->whereUsage('word');
}
}
حالا چرا خط کد زیرم جواب نمیده :
$object=new Tag();
// return $object->TagWords()->get(); //worked
// return $object->TagStartLetter('a')->get(); //worked
// return $object->TagWords()->TagStartLetter('s')->get(); // not worked
یعنی نمیتونم توابع رو روی هم فراخونی کنم ؟ درصورتی که مشکلی نباید داشته باشه چون انگار دو تا where رو پشت سر هم فراخونی میکنم؟
پیشاپیش ممنونم
با سلام و درود
شما به جای این توابع بهتره از scope استفاده کنی که راحت تره و طبق یک اصولی مثلا به جای این تابع
public function TagStartLetter($key){
return $this->where('tag', 'like', $key.'%');
}
خیلی راحت می تونی بنویسی
public function scopeTagStartLetter($query, $key){
return $query->where('tag', 'like', $key.'%');
}
و هر جا نیاز داشتی استفاده کنی
Tag::tagStartLetter('s')->get();
بازم سوالی بود یا کمکی لازم داشتید بفرمایید
سلام.
نبایدم جواب بده چون در انتهای tagwords باید $this رو return کنید
class fakeString
{
private $str;
function __construct()
{
$this->str = "";
}
function addA()
{
$this->str .= "a";
return $this;
}
function addB()
{
$this->str .= "b";
return $this;
}
function getStr()
{
return $this->str;
}
}
$a = new fakeString();
echo $a->addA()->addB()->getStr();
This outputs "ab"
با سلام و درود
شما به جای این توابع بهتره از scope استفاده کنی که راحت تره و طبق یک اصولی مثلا به جای این تابع
public function TagStartLetter($key){
return $this->where('tag', 'like', $key.'%');
}
خیلی راحت می تونی بنویسی
public function scopeTagStartLetter($query, $key){
return $query->where('tag', 'like', $key.'%');
}
و هر جا نیاز داشتی استفاده کنی
Tag::tagStartLetter('s')->get();
بازم سوالی بود یا کمکی لازم داشتید بفرمایید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟